假设我有这个包含大约 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/