javascript - 在 JS 中解析此 XML 的最快方法

标签 javascript xml performance

假设我有这个包含大约 1000 多个 bookinfo 节点的 XML。

<results>
  <books>
   <bookinfo>
        <name>1</dbname>
   </bookinfo>
   <bookinfo>
     <name>2</dbname>
   </bookinfo>
   <bookinfo>
     <name>3</dbname>
   </bookinfo>
 </books>
</results>

我目前正在使用它来获取每本书的名称:

var books = this.req.responseXML.getElementsByTagName("books")[0].getElementsByTagName("bookinfo")

然后使用 for 循环对每个书名做一些事情:

var bookName = books[i].getElementsByTagName("name")[0].firstChild.nodeValue;

当书籍非常大时,我发现这真的很慢。不幸的是,没有办法限制结果集,也没有指定不同的返回类型。

有没有更快的方法?

最佳答案

你可以试试fast xml parser将 XML 数据转换为 JSON,这是在 JS 中实现的。这是 benchmark针对其他解析器。

var parser = require('fast-xml-parser');
var jsonObj = parser.parse(xmlData);

// when a tag has attributes
var options = {
        attrPrefix : "@_"        };
var jsonObj = parser.parse(xmlData,options);

如果你不想使用 npm 库,你可以包含 parser.js直接在您的 HTML 中。

免责声明:我是这个库的作者。

关于javascript - 在 JS 中解析此 XML 的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5138086/

相关文章:

javascript - 三个文本输入到一个 POST 名称

php - 逐个加载 XML,以节省 PHP 内存

Java lambda 比匿名类慢 20 倍

javascript - 将函数包装在 Promise 中是否会导致该函数的代码由另一个线程并行执行?

javascript - 当我使用切换按钮单击此图片时,我的文字没有出现和消失

javascript - jQuery 隐藏跨度值超过范围 slider 值的部分

c# - 创建文件并在那里写入 xml (C#)

php - XML 声明不适用于 PHP

java - 基于 Spring 的 Web 应用程序中的分块 HTTP 响应

c++ - STL 数据结构的输出参数与堆栈返回值的效率