加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用DomDocument PHP获取Xpath父节点?

发布时间:2020-12-13 13:16:41 所属栏目:PHP教程 来源:网络整理
导读:我需要在php中获取特定节点的父节点. 我正在使用DomDocument和Xpath. 我的xml是这样的: ProdCategoriesProdCategory Id138/Id NameParent Category/Name SubCategories ProdCategory Id141/Id NameCategory child/Name /ProdCategory /SubCategories/ProdCa
我需要在php中获取特定节点的父节点.
我正在使用DomDocument和Xpath.
我的xml是这样的:
<ProdCategories>
<ProdCategory>

    <Id>138</Id>

    <Name>Parent Category</Name>

    <SubCategories>

        <ProdCategory>

            <Id>141</Id>

            <Name>Category child</Name>

        </ProdCategory>
   </SubCategories>
</ProdCategory>
</ProdCategories>

php代码:

$dom = new DOMDocument();
$dom->load("ProdCategories_small.xml");
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//ProdCategory/Id[.="141"]/parent::*')->item(0);
print_r($nodes);

印刷品是:

DOMElement Object ( 
[tagName] => ProdCategory [schemaTypeInfo] => [nodeName] => ProdCategory [nodeValue] => 141 Category child [nodeType] => 1 [parentNode] => (object value omitted) [childNodes] => (object value omitted) [firstChild] => (object value omitted) [lastChild] => (object value omitted) [previousSibling] => (object value omitted)

[parentNode]是(对象值省略),为什么?我会的

<Id>138</Id>

    <Name>Parent Category</Name>`

The [parentNode] is (object value omitted),why?

这是因为您使用print_r function并创建了这样的输出(via an internal helper function of the dom extension).创建此代码的代码行是:

print_r($nodes);

当DOMNode使用print_r或var_dump时,字符串“(对象值省略)”由DOMNode给出.它告诉您,该字段的对象值(名为parentNode)不会显示但会被省略.

从该消息可以得出结论,该字段具有作为对象的值.对类名进行简单检查可以验证:

echo get_class($nodes->parentNode),"n"; # outputs  "DOMElement"

将其与整数或(空)字符串的字段进行比较:

[nodeType] => 1
...
[prefix] => 
[localName] => ProdCategory

所以我希望这能为你解决这个问题.只需访问该字段即可获取父节点对象:

$parent = $nodes->parentNode;

并做了.

如果你想知道PHP给你的某个字符串,你感觉它可能是内部的,你可以在http://lxr.php.net/,here is an example query for the string in your question快速搜索所有PHP的代码库.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读