如何遍历xml元素在javascript中的直接子元素,保存特定属性的值
How to iterate over an xml element's direct children in javascript, saving values of specific attributes?
我对javascript比较陌生,并且已经发现了ajax,我已经能够使用它从URL检索xml文件并找到具有特定属性值的元素,但是我无法弄清楚如何遍历元素的子元素,获取特定的属性值。我正在使用的xml文件可以在这里找到,或者可以在中找到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选择器上下文中选择"place"元素:
var $xml = $(xml).find("[name='Glasgow']");
var $places = $('place', $xml)
$places.each(function() { console.log($(this)); });
两个例子都在jsfiddle中。
至于对象,我不得不考虑这个:根据这个找到最近的经度和纬度在数组?您需要首先计算距离,并将其放入数据结构中,因此您可以每次都循环遍历位置(遍历DOM),我怀疑这不是最有效的方法,或者您可以有一个键值列表,键值是计算的距离和每个位置特定的键值。
相关文章:
- 如何自动保存动态生成的HTML SVG元素
- 如何将旋转的画布元素保存到文件中
- 轨道:在保存父元素之前保存子元素
- 保存具有相同属性 JavaScript 的元素上的值
- 关于在对象属性中保存 DOM 元素
- Angular js,在选择元素上,我想 POST 数据以将其保存在数据库中,然后我想使用 PUT 更新它而无需重新加载
- 禁用浏览器自动选项(显示输入元素中保存的单词)
- 从HTML表单中获取计算得到的JavaScript数据,并将其作为新元素添加到相同的表单操作中以使用PHP保存
- 为什么jQuery's每个循环的函数都保存对元素对象的引用
- 如何从一组元素中获取 ID 并保存在数组中
- 将操作后的元素保存到mysql中
- 将html页面的元素保存为图像格式
- 如何将HTML元素保存到jQuery对象中
- 在JQuery中将元素保存为变量
- 当试图将表单元素保存到mongoDB时,无法读取未定义错误的属性
- 将JQuery DOM元素保存为变量
- 使用Jquery将DOM元素保存到变量中
- 将动态创建的表单元素保存到xml中
- 动态创建的html元素保存到数据库
- 将元素保存到变量和仅仅调用document.getElementByID()的区别