gpt4 book ai didi

PHP DOMElement::getElementsByTagName - 无论如何只获取直接匹配的子项?

转载 作者:可可西里 更新时间:2023-11-01 12:41:48 27 4
gpt4 key购买 nike

有没有办法只检索通过调用 DOMElement::getElementsByTagName 找到的直接子项?例如,我有一个包含类别元素的 XML 文档。该类别元素具有子类别元素(具有相同的结构),例如:

<category>
<id>1</id>
<name>Top Level Category Name</name>
<subCategory>
<id>2</id>
<name>Sub Category Name</name>
</subCategory>
...
</category>

如果我有一个代表顶级类别的 DOMElement,

$topLevelCategoryElement->getElementsByTagName('id');

将返回一个列表,其中包含所有“id”元素的节点,我只需要顶层的节点。除了使用 XPath 之外,还有什么方法可以做到这一点?

最佳答案

恐怕不行。您必须遍历子项或使用 XPath。

for ($n = $parent->firstChild; $n !== null; $n = $n->nextSibling) {
if ($n instanceof DOMElement && $n->tagName == "xxx") {
//...
}
}

XPath 和您的 XML 文件的示例:

$xml = ...;
$d = new DOMDocument();
$d->loadXML($xml);
$cat = $d->getElementsByTagName("subCategory")->item(0);
$xp = new DOMXpath($d);
$q = $xp->query("id", $cat); //note the second argument
echo $q->item(0)->textContent;

给出 2

关于PHP DOMElement::getElementsByTagName - 无论如何只获取直接匹配的子项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3049648/

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