Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何获取最深的XML元素_Php_Xml_Xpath - Fatal编程技术网

Php 如何获取最深的XML元素

Php 如何获取最深的XML元素,php,xml,xpath,Php,Xml,Xpath,我想我不明白xpath()是如何工作的 有人有暗示吗?“BrowseNode”元素的数量是灵活的,因此我无法使用固定路径。您必须包装//Name标记,然后获取最后一项 $temp=$item->xpath("//Name[last()]"); 您必须包装//Name标记,然后获取最后一项 $temp=$item->xpath("//Name[last()]"); “最深”元素可以描述为没有祖先节点的元素 (//Name)[last()]

我想我不明白xpath()是如何工作的


有人有暗示吗?“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
元素没有作为子元素的
祖先
元素。