gpt4 book ai didi

php - 换行符在 DOMDocument 中产生文本节点 - 我应该如何处理这个

转载 作者:数据小太阳 更新时间:2023-10-29 02:33:03 26 4
gpt4 key购买 nike

我正在使用 php 的 DOMDocument库并使用 loadXML 读取 XML 字符串.然后,我使用以下代码遍历标记为“信息”的节点的子节点:

$doc = new \DOMDocument();
$doc->loadXML(
'<?xml version="1.0" encoding="UTF-8"?>
<GAEB xmlns="http://www.gaeb.de/GAEB_DA_XML/DA31/3.2">
<Info>
<Version>3.2</Version>
<VersDate>2013-10</VersDate>
<Date>2014-10-10</Date>
<Time>12:28:28</Time>
<ProgSystem>GAEB Zertifizierung</ProgSystem>
<ProgName>BVBS</ProgName>
</Info>
</GAEB>'
);

$Info = $doc->getElementsByTagName("Info");

foreach ($Info as $element) {
echo "[". $element->nodeName. "]";
$nodes = $element->childNodes;
foreach ($nodes as $node) {
echo "[" . $node->nodeName . "]";
echo $node->nodeValue;
}
}

此节点有 6 个子节点,但迭代有 13 次运行。那是因为有解释为 Text nodes 的空白字符.如果我查看每个节点 $node->nodeType它显示1对于 6 个真正的 child 和 3对于 7 个 child ,内容是 \n .现在的问题是,我该如何应对? DOMDocument 包含那些文本节点是否可以,我应该用类似 if($node->nodeType===3) continue 的东西“继续”它们或者我会尝试在加载 xml 时更早地删除那些空格。只需删除 \n来自输入 xml 的代码不起作用,因为节点之间的空格(例如 > <)被解释为文本节点。

示例文件

<?xml version="1.0" encoding="UTF-8"?>
<GAEB xmlns="http://www.gaeb.de/GAEB_DA_XML/DA31/3.2">
<Info>
<Version>3.2</Version>
<VersDate>2013-10</VersDate>
<Date>2014-10-10</Date>
<Time>12:28:28</Time>
<ProgSystem>GAEB Zertifizierung</ProgSystem>
<ProgName>BVBS</ProgName>
</Info>
</GAEB>

最佳答案

可以使用 LIBXML_NOBLANKS 忽略空白节点选项如下:

$doc->loadXML($xml, LIBXML_NOBLANKS);

关于php - 换行符在 DOMDocument 中产生文本节点 - 我应该如何处理这个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58016207/

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