4

我环顾四周,没有看到在 Node.js 中解析 XML 的明显方法。我假设有一些相对简单的 XML 对象,我可以将字符串或 url 传递给,但我在规范中没有找到类似的东西。我需要一个外部库吗?如果是这样,你们会推荐哪一个?我不需要 xPath(尽管我不介意),只要我能以一种明显的方式遍历树(测试 nodeType == ElementNode 并循环遍历子节点)。

4

4 回答 4

12

我建议xml2js,一个简单的 XML 到 JavaScript 对象转换器。然后,您可以迭代生成的对象。页面中的代码片段:

var parseString = require('xml2js').parseString;
var xml = "<root>Hello xml2js!</root>"
parseString(xml, function (err, result) {
    console.dir(result);
});

您可以使用安装它npm install xml2js

于 2013-03-13T04:09:37.420 回答
3

此处列出了多种 XML 模块,您可能会在其中找到最适合您的模块。我知道的一个流行的是sax-js。如果您已经熟悉该库,那么还有libxml 绑定。

于 2013-03-13T03:20:26.910 回答
0

如果您将 Express 与正文解析器一起使用,最简单的方法是使用express-xml-bodyparser。它允许解析所有路由或特定路由的 XML,具体取决于您的场景

所有路线:

const xmlparser = require('express-xml-bodyparser');
// .. other middleware ... 
app.use(express.json());
app.use(express.urlencoded());
app.use(xmlparser());
// ... other middleware ... 

app.post('/receive-xml', function(req, res, next) {

  // req.body contains parsed XML as JSON

});

具体路线:

app.post('/receive-xml', xmlparser({trim: false, explicitArray: false}), function(req, res, next) {
  // req.body contains parsed XML as JSON  
});
于 2019-09-08T06:53:12.537 回答
-1

如果它不是必须在服务器端完成的绝对要求,那么在客户端上您可以使用XMLSerializer解析为字符串,并使用DOMParser解析为 DOM。

XMLSerializer 示例(从 DOM 到字符串):

var XMLS = new XMLSerializer();
var elem = document;
var xml_str = XMLS.serializeToString(elem);
console.log(xml_str);

DOMParser 示例(从字符串到 DOM):

var parser = new DOMParser();
var doc = parser.parseFromString(xml_str, "application/xml");
console.log(doc);
于 2013-03-13T03:27:43.180 回答