gpt4 book ai didi

javascript - 如何在 javascript 中迭代 xml 元素的直接子元素,保存特定属性的值?

转载 作者:行者123 更新时间:2023-12-03 08:35:45 26 4
gpt4 key购买 nike

我对 javascipt 比较陌生,并且发现了 ajax,我可以使用它从 URL 检索 xml 文件并查找具有特定属性值的元素,但我无法弄清楚如何迭代在元素的子元素上,获取特定的属性值。我正在使用的 xml 文件可以找到 here ,或获取 xml 文件的片段,请参见下文:

<markers>
<country lat="53.6707" lng="-4.39453" zoom="5" name="nextbike UK" hotline="+442081669851" domain="uk" country="GB" country_name="United Kingdom" terms="http://www.nextbike.co.uk/media/TERMS-UK_3.pdf" website="http://www.nextbike.co.uk/">
<city uid="237" lat="55.8589" lng="-4.25549" zoom="12" maps_icon="" alias="glasgow" break="0" name="Glasgow">
...
<place uid="264281" lat="55.86078768935794" lng="-4.258602261543274" name="Central Station " spot="1" number="8401" bikes="5+" bike_racks="10" terminal_type="unknown" bike_numbers="81610,81508,81805,81756,81835" />
<place uid="264283" lat="55.860767" lng="-4.264083" name="Waterloo Street" spot="1" number="8402" bikes="5+" bike_racks="6" terminal_type="unknown" bike_numbers="81771,81571,81647,81588,81934" />
...
</city>
</country>
</markers>

我能够使用“name =“glasgow””获取特定城市及其所有子城市

<city uid="237" lat="55.8589" lng="-4.25549" zoom="12" maps_icon="" alias="glasgow" break="0" name="Glasgow">
<place uid="264281" lat="55.86078768935794" lng="-4.258602261543274" name="Central Station " spot="1" number="8401" bikes="5+" bike_racks="10" terminal_type="unknown" bike_numbers="81610,81508,81805,81756,81835" />
<place uid="264283" lat="55.860767" lng="-4.264083" name="Waterloo Street" spot="1" number="8402" bikes="5+" bike_racks="6" terminal_type="unknown" bike_numbers="81771,81571,81647,81588,81934" />
...
</city>

很容易,使用 $(xml).find("[name='Glasgow']"); ,但我不知道如何处理返回的对象。 我需要迭代每个子项 ( <place/> ) 并选择特定属性,例如lat="..." , lng="..."

根据动态获取此信息的容易程度可能会影响我是否需要将信息存储在其他对象中。我将获取用户的地理位置并找到最接近的可用纬度和经度点集。上述粗体问题是最重要的,但如果有人想就他们认为最好的存储此信息的结构以及快速检索信息的最佳方法提出建议,我们非常欢迎您这样做。

最佳答案

使用children().each()

$(xml).find("[name='Glasgow']").children.each(function() {
console.log($(this));
console.log($(this).attr('lat'))
});

您必须查看对象以获取其属性等...但这就是您能够深入研究它的方式。

这是一个用于 View 的 jsfiddle:

http://jsfiddle.net/ubj6nkgr/

或者,您可以在 xml 选择器上下文中选择“放置”元素:

var $xml = $(xml).find("[name='Glasgow']");
var $places = $('place', $xml)
$places.each(function() { console.log($(this)); });

这两个例子都在 jsfiddle 中。

就对象而言,我不得不考虑这个:根据这个Find closest longitude and latitude in array?你需要首先计算距离并将其放入数据结构中,因此你可以每次都循环遍历位置(遍历 DOM),我怀疑这不是最有效的,或者你可以有一个键值列表,键是计算出的距离以及特定于每个位置的键的值。按最短顺序对键进行排序,选择第一个键,您就拥有最接近的位置。

关于javascript - 如何在 javascript 中迭代 xml 元素的直接子元素,保存特定属性的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33224157/

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