gpt4 book ai didi

javascript - 访问同名的不同节点

转载 作者:行者123 更新时间:2023-12-02 21:32:23 25 4
gpt4 key购买 nike

我遇到的情况是,我有一个 xml 文件,其中有不同级别的子节点,称为同一事物。这里的一个例子是:

<listing>
<post_town>London</post_town>
<price>940000</price>
<longitude> 51.2</longitude>
<latitude>20.000</latitude>
<price_change>
<date>2020-01-30 08:43:36</date>
<direction/>
<percent>0%</percent>
<price>975000</price>
</price_change>
<price_change>
<date>2020-02-20 15:59:01</date>
<direction>down</direction>
<percent>-3.5%</percent>
<price>940000</price>
</price_change>
<price_change_summary>
<direction>down</direction>
<percent>-3.5%</percent>
</listing>

我运行的脚本似乎不起作用,我希望它忽略 xml 元素中的“价格”子节点。该脚本如下所示:“

<html>
<body>

<p id="demo"></p>

<script>
var xhttp;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xhttp.open("GET", "http://test.co.uk/xmltest.xml", true);
xhttp.send();

function myFunction(xml) {
var x, y, z, i, txt, xmlDoc;
xmlDoc = xml.responseXML;
txt = "";
x = xmlDoc.getElementsByTagName("latitude");
y = xmlDoc.getElementsByTagName("longitude");
z = xmlDoc.getElementsByTagName("price");


for (i = 0; i < x.length; i++) {
txt += "{location:" + x[i].childNodes[0].nodeValue + ", " + y[i].childNodes[0].nodeValue +", weight:" + z[i].childNodes[0].nodeValue + "},<br>";
}
document.getElementById("demo").innerHTML = txt;
}
</script>
</body>
</html>

作为上面的示例,它应该是“{location: 51.2, 20.000, Weight:940000},
” - 忽略元素中的项目并循环许多不同的列表以提取与以下内容相同的信息如上所述。

最终目标是筛选这个 xml 并打印出每个列表的纬度、经度和原价,但我似乎看不出我做错了什么?

最佳答案

提供的 XML 格式不正确。 <price_change_summary>没有结束标签。所以它不是有效的 XML。一旦您在该元素上放置结束标签,它就会正常工作。

评论后编辑:

更改 y 的选择器和z这样您就可以选择每个 x 的 sibling 。在循环中执行此操作:

for (i = 0; i < x.length; i++) {
const long = x[i].parentNode.querySelector('longitude');
const price = x[i].parentNode.querySelector('price');
txt += "{location:" + x[i].childNodes[0].nodeValue + ", " + long.childNodes[0].nodeValue +", weight:" + price.childNodes[0].nodeValue + "},<br>";
}

关于javascript - 访问同名的不同节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60589268/

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