gpt4 book ai didi

php - 如何通过索引获取 PHP DOMDocument 的子项

转载 作者:可可西里 更新时间:2023-10-31 23:03:13 29 4
gpt4 key购买 nike

我正在尝试获取 PHP DOMDocument 的子项。假设我有一个这样的 DOM 文档:

<div>
<h1 ></h1>
<div id=2></div>
<div class="test"></div>
...
</div>

我有一个索引号 3。然后我需要获取元素 <div class="test"></div> .在 DOMDocument API 中,没有类似 children(3) 的方法.在那儿?我怎样才能得到一个有索引的 child ?

最佳答案

可以使用childNodes。这是 DOM 元素的一个属性,该元素包含一个 NodeList,其中包含该元素的所有子元素。理想情况下,您可以执行 $el->childNodes->item(2)(请注意,它是基于 0 的,而不是基于 1 的,因此 2 是第三项)。但是,这包括文本节点。所以很难预测你的节点将是多少。这可能不是最佳解决方案。

你可以选择 alexn's solution (getElementsByTagName('*')->item(2)),但这同样有其缺点。如果您的节点有子节点,它们也将包含在选择中。这可能会影响您的计算。

我首选的解决方案是使用 XPath:它可能是最稳定的解决方案,而且不是特别难。

您需要在某处使用 $xpath = new DOMXPath($document) 创建一个 XPath 对象,其中 $document 是您的 DOMDocument 实例。我假设 $el 是父 div 节点,即我们正在搜索的“上下文”。

$node = $x->query('*', $el)->item(2);

请注意,我们再次使用基于 0 的索引来查找选择中的哪个元素。在这里,我们只查看顶级 div 的子节点,而 * 只选择元素节点,因此不需要文本节点的计算。

关于php - 如何通过索引获取 PHP DOMDocument 的子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6041073/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com