简体   繁体   English

在Node JS中使用xpath.js解析XML

[英]Parsing XML using the xpath.js in Node JS

My XML looks like this: 我的XML如下所示:

<ns2:OrderList>
  <order order_id="123" item_name="123"/>
  <order order_id="234" item_name="1233"/>
  <order order_id="2357" item_name="1234"/>
  ......
</ns2:OrderList>

I am wanting to use the XPath.js from npjms . 我想使用npjms的XPath.js
How can I get array with "order_id" values ???? 如何获得带有“ order_id”值的数组?

var select = require('xpath.js')
    , dom = require('xmldom').DOMParser

var xml = `<ns2:OrderList>
            <order order_id="123" item_name="123"/>
            <order order_id="234" item_name="1233"/>
            <order order_id="2357" item_name="1234"/>
           </ns2:OrderList>`;


var doc = new dom().parseFromString(xml);    
var nodes = select(doc, "//order/@order_id");
var orderIds = [];
nodes.forEach(function(node) {
    orderIds.push(node.nodeValue);
});

console.log(orderIds);

Something like this should do the trick if you want to use xpath.js (you also need xmldom for parsing though). 如果您想使用xpath.js(尽管您也需要xmldom进行解析),类似这样的方法应该可以解决问题。

const Dom = require('xmldom').DOMParser;
const select = require('xpath.js');
const xml = '<ns2:OrderList> <order order_id="123" item_name="123"/> <order order_id="234" item_name="1233"/> <order order_id="2357" item_name="1234"/> </ns2:OrderList>¬';
const doc = new Dom().parseFromString(xml);
const nodes = select(doc, '//order');

const orderIds = nodes.map((node) => node.getAttribute('order_id'));
console.log(orderIds);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM