1

属性名で以下のxmlの値を取得するにはどうすればよいですか。

    <list version="1.0">
<meta>
<type>resource-list</type>
</meta>
<resources start="0" count="165">
<resource classname="Quote">
<field name="name">USD/KRW</field>
<field name="price">1131.319946</field>
<field name="symbol">KRW=X</field>
<field name="ts">1371547710</field>
<field name="type">currency</field>
<field name="volume">0</field>
</resource>
<resource classname="Quote">
<field name="name">SILVER 1 OZ 999 NY</field>
<field name="price">0.045962</field>
<field name="symbol">XAG=X</field>
<field name="ts">1371505422</field>
<field name="type">currency</field>
<field name="volume">7</field>
</resource>....

そのような構造は 165 あります。

SILVER 1 OZ 999 NY 0.045962 XAG=X 1371505422 などを取得したい

これまでの私のコードは次のようになります

$xml = simplexml_load_string($data);

foreach($xml->children() as $resources)
{
    foreach($resources->children() as $resource => $data)
    {
        echo $data->field['name'];
        echo "<br>";
    }


}
4

4 に答える 4

1

コメント内の XML に基づくと、次のようになります。

$xml = simplexml_load_string($data);

foreach($xml->resources->resource as $resource)
{
    foreach($resource->field as $field)
    {
        echo $field->attributes()->name; // e.g. name, price, symbol
        echo (string)$field; // this is the content, e.g. SILVER 1 OZ 999 NY
    }
}

$xmlこの場合は であるルート要素が常に含まれていることに注意してください<list>

デモ

于 2013-06-18T10:51:12.343 に答える
0

修正されたコード:

<quote>
<name>test</name><price>567</price><symbol>xyz</symbol><ts>1371505422</ts>
<type>currency</type>
<volume>7</volume>
</quote>
$xmlObject = new SimpleXMLElement($xmlstring);
foreach ($xmlObject->children() as $node){
echo $node->Company;
echo $node->price;
echo $node->symbol;
echo $node->ts;
echo $node->type;
echo $node->volume;
}
于 2013-06-18T11:16:42.270 に答える