XPath 获取一级子节点

Gre*_*reg 6 php xpath domxpath

使用 DOMXPath::query 是否可以只获取一层深度的子节点?

例如,如果我有一个类似的文档:

<div>
    <span>
        <cite>
        </cite>
    </span>
    <span>
        <cite>
        </cite>
    </span>
</div>
Run Code Online (Sandbox Code Playgroud)

我希望 NodeList 仅包含跨度而不包含引用。

还应该提到的是,它并不总是相同的元素(div、span 等)。我需要它与任何类型的元素一起使用。

这是我尝试过的,但似乎不起作用:

//*[not(ancestor::div)]
Run Code Online (Sandbox Code Playgroud)

Gai*_*aim 3

如果你使用

/div/*
Run Code Online (Sandbox Code Playgroud)

然后您将获得该元素中所有直接子元素的列表,但这些子元素包含它们的子元素。我认为你不能删除孩子的孩子

有使用默认轴,它被称为child::。该轴仅返回当前节点下1层的元素

*匹配所有元素,但不匹配属性和 text()

您必须指定节点的路径并小心,//node因为这意味着descendant::node它会返回该树中该名称的所有节点