gpt4 book ai didi

PHP DOM : How to get child elements by tag name in an elegant manner?

转载 作者:可可西里 更新时间:2023-11-01 14:03:06 28 4
gpt4 key购买 nike

我正在使用 PHP DOM 扩展解析一些 XML,以便以其他形式存储数据。毫不奇怪,当我解析一个元素时,我经常需要获取某个名称的所有子元素。有方法 DOMElement::getElementsByTagName($name),但它返回所有具有该名称的后代,而不仅仅是直系子代。还有属性 DOMNode::$childNodes 但 (1) 它包含节点列表,而不是元素列表,即使我设法将列表项转换为元素 (2) 我仍然需要检查所有这些名称的名称。是否真的没有优雅的解决方案来只获取某个特定名称的 child ,或者我在文档中遗漏了什么?

一些插图:

<?php

DOMDocument();
$document->loadXML(<<<EndOfXML
<a>
<b>1</b>
<b>2</b>
<c>
<b>3</b>
<b>4</b>
</c>
</a>
EndOfXML
);

$bs = $document
->getElementsByTagName('a')
->item(0)
->getElementsByTagName('b');

foreach($bs as $b){
echo $b->nodeValue . "\n";
}

// Returns:
// 1
// 2
// 3
// 4
// I'd like to obtain only:
// 1
// 2

?>

最佳答案

简单的迭代过程

$parent = $p->parentNode;

foreach ( $parent->childNodes as $pp ) {

if ( $pp->nodeName == 'p' ) {

if ( strlen( $pp->nodeValue ) ) {
echo "{$pp->nodeValue}\n";
}

}

}

关于PHP DOM : How to get child elements by tag name in an elegant manner?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19555054/

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