Node.js 存在命名空间指令时分析xml时出错
我需要使用node.js读取多个XML文件。当根节点包含名称空间指令时,解析xml文件将失败。当删除名称空间指令时,所有这些指令都可以正常工作。我的所有文件都可以有不同的声明。如何解析XML,而忽略名称空间属性?我需要使用xPath来获取一些值 我在用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('
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"