Node.js 存在命名空间指令时分析xml时出错

Node.js 存在命名空间指令时分析xml时出错,node.js,xml-parsing,xmldom,Node.js,Xml Parsing,Xmldom,我需要使用node.js读取多个XML文件。当根节点包含名称空间指令时,解析xml文件将失败。当删除名称空间指令时,所有这些指令都可以正常工作。我的所有文件都可以有不同的声明。如何解析XML,而忽略名称空间属性?我需要使用xPath来获取一些值 我在用 var fs = require('fs'); var xpath = require('xpath'); var dom = require('xmldom').DOMParser; var xml = fs.readFileSync('

我需要使用node.js读取多个XML文件。当根节点包含名称空间指令时,解析xml文件将失败。当删除名称空间指令时,所有这些指令都可以正常工作。我的所有文件都可以有不同的声明。如何解析XML,而忽略名称空间属性?我需要使用xPath来获取一些值

我在用

var fs = require('fs');
var xpath = require('xpath');
var dom   = require('xmldom').DOMParser;

var xml = fs.readFileSync('/test.xml', 'utf8').toString();
var doc = new dom().parseFromString(xml);
var id = xpath.select("/export/asset/id", doc);

console.log(id[0].firstChild.data);
XML文件

<export xmlns="some url" xmlns:xsi="some url" format="archive" version="2.4" xsi:schemaLocation="some url.xsd">
  <asset>
    <id>1445254514291</id>
    <name>test</name>
    <displayName />
    <origin>demo</origin>
  </asset>
<export>

1445254514291
测试
演示

一般来说,最好考虑名称空间,但如果必须处理太多名称空间,一种完全避免它们的方法是使用xpath和稍微复杂但有效的,
local-name()
函数

所以我会改变

var id = xpath.select("/export/asset/id", doc);

对于问题中的示例xml,应该输出:

"1445254514291"

不要试图回避或忽略它们,您需要认真学习尊重XML名称空间并将其包含在查询中!
"1445254514291"