【问题标题】:Parsing XML in Javascfipt在 Javascript 中解析 XML
【发布时间】:2012-01-19 00:18:33
【问题描述】:

好的,我正在尝试从 Javascript 中的 get 请求中解析 XML。 这就是 XML 的样子

<markers>
<marker>
<name>
<![CDATA[ Pan Africa Market ]]>
</name>
<address>
<![CDATA[ 1521 1st Ave, Seattle, WA ]]>
</address>
<lat>47.608940</lat>
<lng>-122.340141</lng>
<price>150</price>
<type>restaurant</type>
</marker>
</markers>

我正在尝试将标记推送到一个数组中,以便以后可以访问它(我正在使用它构建一个谷歌地图标记)

在结果变量中,我保存了 get 请求的响应(这是完美的,我知道它可以提醒“params.length”)

var result = this.responseText;

var xml = Ti.XML.parseString(result);
var items = xml.documentElement.getElementsByTagName("marker");

var name = xml.documentElement.getElementsByTagName("name");
var value = xml.documentElement.getElementsByTagName("address");

var data = [];

for (var i=0;i<items.length;i++) {
         alert(items.item(i).getElementsByTagName("price").item(0).text);



}

我可以提醒商品价格(当然是 1 比 1),但问题是如何保存以便以后访问。 我红色我必须将它推入 for 循环中的数据变量,但我只是不知道如何。

提前致谢。 PD 我在 Appcelerator 中使用它。 (我认为这不是很重要)

【问题讨论】:

  • 我有一个问题和几个 cmets:什么是 TI(因为您将您的帖子标记为 AppCelerator,我假设它与此有关)?当您使用“getElementsByTagName”时,您会得到一个数组而不是单个值。可能只有一个具有您指定名称的标签,但它将位于一个数组中(实际上是在节点列表中)。您的“数据”数组必须是 2D 或包含对象,因为您想将“名称”和“值”都保存在同一个索引上(我假设)。

标签: javascript xml arrays parsing appcelerator


【解决方案1】:

试试这个:

var markers = xml.documentElement.getElementsByTagName("marker");

var data = [];

for (var i=0;i<markers.length;i++) {
    console.log(markers[i].getElementsByTagName("name")[0]);
    data.push({
        name: markers[i].getElementsByTagName("name")[0].textContent,
        address: markers[i].getElementsByTagName("address")[0].textContent 
    })
}
// data is now [{name: "...", address: "..." }]

查看工作小提琴:http://jsfiddle.net/nrabinowitz/XZnXn/

有关在 Javascript 中导航 DOM 结构的更多信息,您可能需要查看MDN DOM Reference

【讨论】:

  • 这正是我所需要的,但让我直截了当地说......现在变量数据中有一个数组,所以我可以像这样访问数组中的元素:data.markers1。姓名 ??我说的对吗?
  • 数组是用[]访问的,所以应该是data[0].name,等等
猜你喜欢
  • 1970-01-01
  • 2014-05-31
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 2016-08-15
  • 2012-08-01
  • 1970-01-01
相关资源
最近更新 更多