1

XML ファイルに次の配列を設定しています。

<?xml version="1.0"?>
<hats>
    <a id="Chicago BULLS" img="bulls.jpeg" cost="$25.00" />
    <b id="Toronto RAPTORS" img="raptors.jpeg" cost="$25.00" />
    <c id="Orlando MAGIC" img="magic.jpeg" cost="$25.00" />
</hats>
<clothes>
    <a id="Chicago BULLS 23" img="bullstee.jpeg" cost="$30.00" />
    <b id="Toronto RAPTORS 23" img="torontotee.jpeg" cost="$30.00" />
    <c id="Orlando MAGIC 23" img="magictee.jpeg" cost="$30.00" />
</clothes>

私が見つけた関数を使用して、XML を次のような多次元配列に変換しました。

Array
(
    [hats] => Array
        (
            [a] => Array
                (
                )

            [a_attr] => Array
                (
                    [id] => Chicago BULLS
                    [img] => bulls.jpeg
                    [cost] => $25.00
                )

            [b] => Array
                (
                )

            [b_attr] => Array
                (
                    [id] => Toronto RAPTORS
                    [img] => raptors.jpeg
                    [cost] => $25.00
                )

            [c] => Array
                (
                )

            [c_attr] => Array
                (
                    [id] => Orlando MAGIC
                    [img] => magic.jpeg
                    [cost] => $25.00
                )

        )

)

ご覧のとおり、XML ファイルの半分しか使用していません。また、数字を使用できないため、文字に頼らなければなりません。

最終的に、XMLファイルを読み取ってから、タグとタグ内に表示されているものだけを出力し、最終的にはそれ以上のものを出力しようとしています。

XML ファイルを配列にきれいに解析して、foreach ループを使用して XML ファイルの特定のセクション (帽子のみまたは服のみ) の各行を表示するにはどうすればよいですか。

4

2 に答える 2

1

を使用して XML から直接読み取ってみませんsimplexmlか?

$xml = simplexml_load_string($x); // assume XML in $x

foreach ($xml->children() as $name => $value) {
    echo "$name: <br />"; // name of the node, e.g. '<hats>'
    foreach ($value->children() as $item) {
        echo "$item[id], $item[img], $item[cost]<br />";
    }
}

これが機能していることを確認してください:http://3v4l.org/dpjsg

あなたがこの XML の作成者である場合は、次のように解析しやすくします。

<items>
    <group name="hats">
        <item id="1" name="Chicago BULLS" img="bulls.jpeg" cost="25.00" />
    </group>
    <group name="clothes">
        ...
    </group>
</items>
于 2013-11-16T00:02:13.313 に答える
0

使用できるxml_parse_into_struct— XML データを配列構造に解析する

構文: int xml_parse_into_struct ( resource $parser , string $data , array &$values [, array &$index ] ) この関数は、XML 文字列を 2 つの並列配列構造に解析します。一方 (インデックス) には、適切な値の場所へのポインターが含まれます。値配列で。これらの最後の 2 つのパラメーターは、参照渡しする必要があります。

 <?php
    $simple = '<hats>
                <a id="Chicago BULLS" img="bulls.jpeg" cost="$25.00" />
                <b id="Toronto RAPTORS" img="raptors.jpeg" cost="$25.00" />
                <c id="Orlando MAGIC" img="magic.jpeg" cost="$25.00" />
            </hats>
            <clothes>
                <a id="Chicago BULLS 23" img="bullstee.jpeg" cost="$30.00" />
                <b id="Toronto RAPTORS 23" img="torontotee.jpeg" cost="$30.00" />
                <c id="Orlando MAGIC 23" img="magictee.jpeg" cost="$30.00" />
            </clothes>';
    $p = xml_parser_create();
    xml_parse_into_struct($p, $simple, $vals, $index);
    xml_parser_free($p);
    echo "Index array\n";
    print_r($index);
    echo "\nVals array\n";
    print_r($vals);
  ?>

参照: http://us1.php.net/xml_parse_into_struct

于 2013-11-15T09:37:58.460 に答える