Php 使用XPATH列出不包含内容的XML子元素名称
考虑以下简单的XML模式:Php 使用XPATH列出不包含内容的XML子元素名称,php,xml,xpath,Php,Xml,Xpath,考虑以下简单的XML模式: <products> <category name="furniture"> <item name="chair"> <size> <small>10</small> ...and many more <large>20</large&g
<products>
<category name="furniture">
<item name="chair">
<size>
<small>10</small>
...and many more
<large>20</large>
</size>
</item>
</category>
</products>
我正在寻找以下输出:
small
...rest of elements
large
Xpath表达式中有一些错误。第一个=位于错误位置,椅子字符串缺少结束引号。添加
/*
可以直接选择大小的子节点
/products/category[@name='furniture']/item[@name='chair']/size/*
使用DOMDocument的完整源代码:
$xml = <<<'XML'
<products>
<category name="furniture">
<item name="chair">
<size>
<small>10</small>
<large>20</large>
</size>
</item>
</category>
</products>
XML;
$dom = new DOMDocument();
$dom->loadXml($xml);
$xpath = new DOMXPath($dom);
$nodes = $xpath->evaluate("/products/category[@name='furniture']/item[@name='chair']/size/*");
foreach ($nodes as $node) {
echo $node->localName, "\n";
}
$xml=localName,“\n”;
}
/products/category[@name='furniture']/item[@name='chair']/size/*
$xml = <<<'XML'
<products>
<category name="furniture">
<item name="chair">
<size>
<small>10</small>
<large>20</large>
</size>
</item>
</category>
</products>
XML;
$dom = new DOMDocument();
$dom->loadXml($xml);
$xpath = new DOMXPath($dom);
$nodes = $xpath->evaluate("/products/category[@name='furniture']/item[@name='chair']/size/*");
foreach ($nodes as $node) {
echo $node->localName, "\n";
}