xpath — DOMXPATH как вернуть ТОЛЬКО прямых потомков

Я пытаюсь использовать DOMXPath, чтобы получить список дочерних элементов в файле XSD, которые являются прямыми потомками элемента с именем «Item». Однако, используя 2 опции xpath, перечисленные ниже, в результаты всегда включаются внуки, а также дочерние узлы.

ура

$dom = new DOMDocument();
$dom->load('xsdfile.xsd');

$xpath = new DOMXPath($dom);

//$xpath_str = '//xs:element[@name="Item"]/descendant::xs:element';
$xpath_str = '//xs:element[@name="Item"]//xs:element';

$results = $xpath->evaluate($xpath_str);

1

Решение

Под element есть complexType, затем sequence, choice или же all, а затем фактические дочерние элементы, поэтому XPath должен быть:

//xs:element[@name="Item"]/xs:complexType/*/xs:element

(* = любой элемент) или

//xs:element[@name="Item"]/*/*/xs:element
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]