javascript - 读取 xml 确保保留节点上的顺序

标签 javascript dom-traversal

我正在使用 JavaScript 读取此 XML
我如何确保我正在阅读 <item> <record> 内的元素其存在于 xml 中的顺序相同(因此 [Robinson Crusoe] 将首先出现,然后是 [Daniel Defo])

这行得通吗?

record[index].find("item:eq(0)").text();
record[index].find("item:eq(1)").text();

xml:

<result>
   <record>
        <item>Robinson Crusoe</item>
        <item>Daniel Defo</item>
   </record>
   <record>
        <item>Gullivers Travels</item>
        <item>Jonathan Swift</item>
   </record>
   <record>
        <item>Tom Jones</item>
        <item>Henry Fielding</item>
   </record>
</result>

最佳答案

只需几行纯 JavaScript,即可将 XML 数据转换为数组。没有理由为此加载像 jQuery 这样的大型框架(除非它在其他地方使用)。正如您从示例中看到的,数组项的排序与 XML 中的排序相同。该解决方案最适合问题的简单 XML 结构。

点击显示代码并运行代码片段以查看其工作原理:

var i, xmlStr, items, list = [];

xmlStr = document.getElementById('data').value;

items = (new window.DOMParser())
  .parseFromString( xmlStr, 'text/xml')
  .getElementsByTagName('item');


for (i = 0; i < items.length; i++) {
  list.push(items[i].childNodes[0].nodeValue);
};


document.getElementById('stdout').value = JSON.stringify(list, null, ' ');
textarea {
  width: 25em;
  height: 6em;
  padding: 0.5em;
  border: 1px solid black;
}
<div>JS ARRAY</div>
<textarea id="stdout"></textarea>

<div>XML</div>
<textarea id="data">
  <result>
    <record>
      <item>Robinson Crusoe</item>
      <item>Daniel Defo</item>
    </record>
    <record>
      <item>Gullivers Travels</item>
      <item>Jonathan Swift</item>
    </record>
    <record>
      <item>Tom Jones</item>
      <item>Henry Fielding</item>
    </record>
  </result>
</textarea>

items = ( new window.DOMParser() )
  .parseFromString( xmlStr, 'text/xml' )
  .getElementsByTagName( 'item' );

for (i = 0; i < items.length; i++) 
  list.push(items[i].childNodes[0].nodeValue );

关于javascript - 读取 xml 确保保留节点上的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35382332/

相关文章:

javascript - 在 JavaScript 中递归维护祖先/ parent 嵌套对象

javascript - 在运行时动态更改 QML 主题

javascript - querySelectorAll 和 getElementsBy* 方法返回什么?

javascript - 咕噜postcss "not found"

javascript - $.removeCookie 不会删除 Chrome 中的 cookie

javascript - 创建 Pusher 表单 javascript 的新实例

javascript - querySelectorAll 和 getElementsBy* 方法返回什么?

javascript - phantomjs 获取所有 img 元素

jquery - 如何获取 "this"以下的元素