使用DomDocument PHP获取Xpath父节点?
我需要在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>`
这是因为您使用 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的代码库. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |