javascript - 使用 Javascript 读取 XML

标签 javascript xml parsing

我正在通过基于 Javascript 构建的 SpineTix 读取 XML 文件。我为此创建了一个自定义解析器。

这是XML结构

<ArlandaExpress>
<info>
<updated date="2013-06-10" time="10:28:42"/>
<message priority="1">
<![CDATA[
Biljettköp ombord kostar 100:- extra, ticket on board 100 SEK extra
]]>
</message>
<message priority="2">
<![CDATA[
Biljettköp ombord kostar 100:- extra, ticket on board 100 SEK extra
]]>
</message>
<message priority="3">
<![CDATA[
Restid 20 min. 2 för 380 kr tor-sön och röda dagar t.o.m.16/6// Traveltime 20 min. 2 for 380 SEK Thu-Sun and bank holidays until 16/6
]]>
</message>
</info>
  <StockholmC>
    <next minutes="6"/>
    <upcoming datetime="2013-06-10 10:50"/>
    <upcoming datetime="2013-06-10 11:05"/>
    <upcoming datetime="2013-06-10 11:20"/>
  </StockholmC>
</ArlandaExpress>

我需要获取 StockholmC 标记中的分钟和日期时间属性。我怎样才能做到这一点?到目前为止,这是我的代码,顺便说一句,如果您从文档中删除除 StockholmC 之外的所有其他标签,它就可以工作

function custom_parser( response, records ){
   var rssDocument = parseXML( response );
   if ( rssDocument==null ) return;
   for ( var row=rssDocument.documentElement.firstElementChild; row!=null;   row=row.nextElementSibling ) {
      var r =  new Object();      
      r.next = row.getAttribute('minutes');
      r.date = row.getAttribute('datetime');
      records.push( r );
   }
}

我想指出,上面的代码在只有 StockholmC 标签的 XML 文件中有效。

谢谢

最佳答案

您正在遍历根的每个子节点,从 <info> 开始(rssDocument.documentElement.firstElementChild)。这些元素没有 minutesdatetime属性。

如果您只想遍历 <StockholmC> 的子项,您必须获得对它的引用而不是 documentElement :

function custom_parser( response, records ){
   var rssDocument = parseXML( response );
   if (!rssDocument) return;
   var stockholmc = rssDocument.getElementsByTagName('StockholmC')[0];
   if (!stockholmc) return;
   for (var row=stockholmc.firstElementChild; row!=null; row = row.nextElementSibling) {
       // ...
   }
}

DOM 接口(interface)提供了很多遍历DOM 树的方法。看看 introduction to DOM on MDN .

关于javascript - 使用 Javascript 读取 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17019808/

相关文章:

xml - XSLT 设置默认值时选择一个不可用

xml - 在 xslt 中创建数组

jquery - 从 XML 创建资源数据捕获记录的脚本解决方案

java动态选择要执行的类

javascript - 将事件类添加到下一个 sibling

javascript - 带有多个选项卡的 Node.js 和 Socket.io

javascript - 无法在 Chrome 扩展程序中运行内容脚本

python电子邮件获取多个同名标题的值

ruby-on-rails - Rails - ActionView::Base.field_error_proc 向上移动 DOM 树?

javascript - 如何创建包含单个元素或元素数组的数组?