PHP - DOMXPATH如何只返回直接后代

时间:2015-01-22 13:09:41

标签: php xpath xsd 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 个答案:

答案 0 :(得分:1)

element下,有complexType,然后是sequencechoiceall,然后是实际的子元素,因此XPath应为:< / p>

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

* =任何元素)或

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