XPath和PHP:任何东西都不能正常工作
这是我的密码:XPath和PHP:任何东西都不能正常工作,php,xml,xpath,simplexml,Php,Xml,Xpath,Simplexml,这是我的密码: $XML = <<<XML <items> <item id="123"> <name>Item 1</name> </item> <item id="456"> <name>Item 2</name> </item> <item id="789"> <
$XML = <<<XML
<items>
<item id="123">
<name>Item 1</name>
</item>
<item id="456">
<name>Item 2</name>
</item>
<item id="789">
<name>Item 3</name>
</item>
</items>
XML;
$objSimpleXML = new SimpleXMLElement($XML);
print_r($objSimpleXML->xpath('./item[1]'));
print "- - - - - - -\n";
print_r($objSimpleXML->xpath('./item[2][@id]'));
print "- - - - - - -\n";
print_r($objSimpleXML->xpath('./item[1]/name'));
我同意第一个输出。
但是在第二个输出中,返回的是整个元素而不是属性。为什么?
最后一个列表是空的,而不是名称内容?这是因为XPath错误。你在使用谓词,即
./item[2][@id]
这意味着“第二个项
,具有id
属性”,但它似乎是您想要的
./item[2]/@id
试试这个,如果这不是你想要的,请给出一个更好的例子
<?php
$XML = <<<XML
<items>
<item id="123">
<name>Item 1</name>
</item>
<item id="456">
<name>Item 2</name>
</item>
<item id="789">
<name>Item 3</name>
</item>
</items>
XML;
$objSimpleXML = new SimpleXMLElement($XML);
$items = $objSimpleXML->xpath('./item');
print '<pre>';
print_r($items[0]);
print "- - - - - - -\n";
print_r($items[1]->attributes()->id);
print "- - - - - - -\n";
print_r($items[2]->name);
id);
打印“--\n”;
打印($items[2]->名称);
<?php
$XML = <<<XML
<items>
<item id="123">
<name>Item 1</name>
</item>
<item id="456">
<name>Item 2</name>
</item>
<item id="789">
<name>Item 3</name>
</item>
</items>
XML;
$objSimpleXML = new SimpleXMLElement($XML);
$items = $objSimpleXML->xpath('./item');
print '<pre>';
print_r($items[0]);
print "- - - - - - -\n";
print_r($items[1]->attributes()->id);
print "- - - - - - -\n";
print_r($items[2]->name);