使用 DOMXPath::query 是否有可能只获得一层深度的子节点?
例如,如果我有这样的文档:
<div>
<span>
<cite>
</cite>
</span>
<span>
<cite>
</cite>
</span>
</div>
我希望 NodeList 只包含跨度而不包含引用。
还应该提到它不会总是相同的元素(divs、span 等)。我需要它来处理任何类型的元素。
这是我试过的,但似乎没有用:
//*[not(ancestor::div)]
最佳答案
如果你使用
/div/*
然后您将获得该元素中所有直接子元素的列表,但这些子元素包含它们的子元素。我认为你不能删除 child 的 child
使用默认轴,称为child::
。该轴只返回当前节点下1层的元素
*
匹配所有元素,但既不匹配属性也不匹配 text()
您必须指定节点的路径并注意 //node
因为它意味着 descendant::node
并且它返回此树中此名称的所有节点
关于php - 获取一级子节点的XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987586/