0

次の方法で simplexml-Object からノードを選択しますxpath

$x="<root>
    <person>
    <name>Julie</name>
    <age>37</age>   
    <rating>5</rating>
    </person>
    <person>
    <name>Greta</name>
    <age>56</age>
    <rating>7</rating>
    </person>
    <person>
    <name>Kerstin</name>
    <age>38</age>
    <rating>10</rating>
    </person>   
</root>";

$xml = simplexml_load_string($x);

$person = $xml->xpath("//person[name='Greta']");

foreach ($person[0] as $k => $v) 
    echo "$k => $v<br />";

これは期待どおりに出力されています...

name => Greta<br />age => 56<br />rating => 7<br />    

それから私は...

echo $person[0]['age'];

出力:

そうです、何もありません!なんで?

ライブで試してみてください @ http://3v4l.org/Voalu

4

1 に答える 1

1

SimpleXMLは、子ノードに配列メンバーではなくオブジェクト プロパティを使用します (配列メンバーはノード属性へのアクセスに使用されます)。次の式は年齢を取得します。

echo $person[0]->age;

XML が次のようになっていれば、コードは機能します。

<root>
    <person age="37">
       <name>Julie</name>
       <rating>5</rating>
    </person>
    ...
于 2013-03-27T23:11:06.437 に答える