php - 获取一级子节点的XPath

标签 php xpath domxpath

使用 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/

相关文章:

php - 使用 preg_replace 转换缩进(无回调)

php - fork PHP 应用程序中的单个数据库连接

sharepoint - 格式化日期(Sharepoint 设计器)

PHP DomXPath - 按类获取子项

PHP - DOMXpath - 获取结果

php - MySQL - 从3个表中获取数据

php - MYSQL PHP插入表

java - 使用java(使用Xpath?)在xml文件中进行全文搜索

python - 通过 XPath 获取文本,忽略标记