我有以下 PHP 和 XML:
$XML = <<<XML
<items>
<item id="12">
<name>Item A</name>
</item>
<item id="34">
<name>Item B</name>
</item>
<item id="56">
<name>Item C</name>
</item>
</items>
XML;
$simpleXmlEle = new SimpleXMLElement($XML);
print_r($simpleXmlEle->xpath('./item[1]'));
print "- - - - - - -\n";
print_r($simpleXmlEle->xpath('./item[2][@id]'));
print "- - - - - - -\n";
print_r($simpleXmlEle->xpath('./item[1]/name'));
我可以像这样访问ID
$simpleXmlEle->items->item[0]['id']
由于它是一个动态应用程序,xpath 在运行时作为字符串提供,所以我相信我应该使用 xpath。
上面的 PHP 产生:
PHP:
Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 12
)
[name] => Item A
)
)
- - - - - - -
Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 34
)
[name] => Item B
)
)
- - - - - - -
Array
(
[0] => SimpleXMLElement Object
(
)
)
我理解第一个输出,但在第二个输出中,整个元素被返回,而不仅仅是属性。
1)任何想法为什么?
最后一项也是空的
2)为什么会这样?正确的 xpath 是什么?
我的目标是第二个和第三个输出为:34(第二个元素的 id 属性的值)项目 A(只是第一个元素的名称)。