Php 如何获取最深的XML元素
我想我不明白xpath()是如何工作的Php 如何获取最深的XML元素,php,xml,xpath,Php,Xml,Xpath,我想我不明白xpath()是如何工作的 有人有暗示吗?“BrowseNode”元素的数量是灵活的,因此我无法使用固定路径。您必须包装//Name标记,然后获取最后一项 $temp=$item->xpath("//Name[last()]"); 您必须包装//Name标记,然后获取最后一项 $temp=$item->xpath("//Name[last()]"); “最深”元素可以描述为没有祖先节点的元素 (//Name)[last()]
有人有暗示吗?“BrowseNode”元素的数量是灵活的,因此我无法使用固定路径。您必须包装
//Name
标记,然后获取最后一项
$temp=$item->xpath("//Name[last()]");
您必须包装
//Name
标记,然后获取最后一项
$temp=$item->xpath("//Name[last()]");
“最深”元素可以描述为没有祖先节点的元素
(//Name)[last()]
- 获取任何“BrowseNode”
//BrowseNode
- 。。。没有“祖先”子级
//BrowseNode[非(祖先)]
- 。。。获取其“Name”子级
//BrowseNode[非(祖先)]/Name
- 。。。将第一个获取的节点强制转换为字符串
字符串(//BrowseNode[not(祖先)]/Name)
如果允许该结构具有多个BrowseNode
分支,那么仅使用Xpath无法解决该问题。在这种情况下,必须将节点提取到数组中并对其进行排序
$document = new DOMDocument();
$document->loadXML($xml);
$xpath = new DOMXpath($document);
var_dump(
$xpath->evaluate('string(//BrowseNode[not(Ancestors)]/Name)')
);
“最深”元素可以描述为没有祖先节点的元素
(//Name)[last()]
- 获取任何“BrowseNode”
//BrowseNode
- 。。。没有“祖先”子级
//BrowseNode[非(祖先)]
- 。。。获取其“Name”子级
//BrowseNode[非(祖先)]/Name
- 。。。将第一个获取的节点强制转换为字符串
字符串(//BrowseNode[not(祖先)]/Name)
如果允许该结构具有多个BrowseNode
分支,那么仅使用Xpath无法解决该问题。在这种情况下,必须将节点提取到数组中并对其进行排序
$document = new DOMDocument();
$document->loadXML($xml);
$xpath = new DOMXpath($document);
var_dump(
$xpath->evaluate('string(//BrowseNode[not(Ancestors)]/Name)')
);
警告:根据实际文档的结构,最后一个名称
节点可能不是嵌套最深的节点,并且可能有多个BrowseNode
元素没有作为子元素的祖先
元素。警告:根据实际文档的结构,最后一个名称
节点可能不是嵌套最深的节点,并且可能有多个BrowseNode
元素没有作为子元素的祖先
元素。