gpt4 book ai didi

php - XML 解析 - 缺少节点

转载 作者:可可西里 更新时间:2023-11-01 01:04:08 24 4
gpt4 key购买 nike

我遇到的问题是我的 xml 文件的某些节点被正确解析和显示,而其他节点未被检测到(至少我不知道这里出了什么问题)

我不会发布 xml 文件,而是提供 link to it .这是一个小的 XML 片段,供您查看 xml 结构:

<offers version="1"><group name="games">
<o id="1" url="http://inexus.us/world-of-warcraft-eu/pre-paid-game-time-card-60-days" price="21.53" avail="1">
<name>World of Warcraft EU Pre-Paid Game Time Card 60 Days</name>
<currency>
EUR
</currency>
</o>

现在,我正在使用这段代码来解析/读取 xml 文件。

$xmlDOM = new DOMDocument();
$xmlDOM->load("http://inexus.us/compare.xml");
$document = $xmlDOM->documentElement;
foreach ($document->childNodes as $node) {
if ($node->hasChildNodes()) {
foreach($node->childNodes as $temp) {
echo $temp->nodeName."=".$temp->nodeValue."<br />";

}
}
}

使用该代码,我得到每个元素 oname但是,我还需要获取存储在 o 元素中的信息...(即 idurlprice) 但我不太明白如何访问它们。

输出还返回几个 #text= block 。 (我猜这是因为 xml 中的空格导致的?)

一小段输出:

#text=
#text=
o= World of Warcraft EU Pre-Paid Game Time Card 60 Days EUR
#text=
o= World of Warcraft EU Battle Chest cd-key EUR
#text=
o= World of Warcraft EU Cataclysm cd-key EUR
#text=

感谢任何帮助/提示!

最佳答案

#text 必须处理空格。您可以使用 preserveWhiteSpace = false(见下文),但您必须记住在 load() 之前使用它。

至于属性,您可以使用 hasAttributes() 检查节点是否具有属性,然后使用 attributes 遍历节点的属性。

在下面的示例中,我采用了快捷方式并获取了所有 o 标签:

<?php
$xmlDOM = new DOMDocument();
$xmlDOM->preserveWhiteSpace = false;
$xmlDOM->load("http://inexus.us/compare.xml");
$offers = $xmlDOM->getElementsByTagName('o');
foreach ($offers as $offer) {
if($offer->hasAttributes()){
foreach($offer->attributes as $attr){
$name = $attr->nodeName;
$value = $attr->nodeValue;
echo $name.' = '.$value.'<br>';
}
}
if ($offer->hasChildNodes()) {

foreach($offer->childNodes as $o) {
echo $o->nodeName."=".$o->nodeValue."<br />";

}
}
echo '<hr>';
}?>

关于php - XML 解析 - 缺少节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15296952/

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