Potrzebuję uzyskać nadrzędnego określonego węzła w php. Używam DomDocument i Xpath. Moje xml jest taka:Pobierz węzeł nadrzędny Xpath z DomDocument PHP?
<ProdCategories>
<ProdCategory>
<Id>138</Id>
<Name>Parent Category</Name>
<SubCategories>
<ProdCategory>
<Id>141</Id>
<Name>Category child</Name>
</ProdCategory>
</SubCategories>
</ProdCategory>
</ProdCategories>
Kod 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);
Wydruk jest:
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]
jest (object value omitted)
, dlaczego? Chciałbym dostać
<Id>138</Id>
<Name>Parent Category</Name>`
Czy ostatni węzeł określony w pytaniu oznacza pożądany wynik? Twoje wyrażenie Xpath można przepisać jako '// ProdCategory [Id [. =" 141 "]]", czy to działa? – collapsar
@collapsar dziękuję za odpowiedź. Nie, nie działa. Ostatni węzeł w moim pytaniu jest tym, czego chcę. – Eliana
@collapsar - lub nawet '// ProdCategory [Id =" 141 "]' –