【问题标题】:PHP - DOMXPATH how to return ONLY direct descendantsPHP - DOMXPATH 如何仅返回直接后代
【发布时间】:2015-01-22 13:09:41
【问题描述】:

我正在尝试使用 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);

【问题讨论】:

  • //xs:element[@name="Item"]/xs:element 怎么样?

标签: php xpath xsd domxpath


【解决方案1】:

element 下有complexType,然后是sequencechoiceall,然后是实际的子元素,所以 XPath 应该是:

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

* = 任何元素)或

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多