2017-08-15 94 views
0

问题:我在客户端和服务器端都有XML,但是没有一致的方式来解析XML。适用于浏览器和Node.js的XML解析器?

大多数浏览器都有DOMParser。但是Node.js没有内置的XML解析器。 Node.js有很多用于XML解析的模块,但是我正在寻找一个与前端和后端一致的XML解析器API。换句话说,我正在寻找能在Node.js的使用这样

const parser = require(magic_library); 
const doc = parser.parseFromString(xml_string, 'application/xml'); 

,并在这样的

<script src="magic_library"></script> 
<script> 
    const doc = parser.parseFromString(xml_string, 'application/xml'); 
</script> 
+0

请参阅[help/on-topic],特别是编号列表部分的项目#4。 –

+0

尝试fast-xml-parser –

回答

1

浏览器中的XML解析模块尝试fast-xml-parser

在Node.js中

var fastXmlParser = require('fast-xml-parser'); 
var jsonObj = fastXmlParser.parse(xmlData); 

// when a tag has attributes 
var options = { 
    attrPrefix : "@_", 
    textNodeName : "#text", 
    ignoreNonTextNodeAttr : true, 
    ignoreTextNodeAttr : true, 
    ignoreNameSpace : true, 
    ignoreRootElement : false, 
    textNodeConversion : true, 
    textAttrConversion : false, 
    arrayMode : false 
}; 
if(fastXmlParser.validate(xmlData)=== true){//optional 
    var jsonObj = fastXmlParser.parse(xmlData,options); 
} 

//Intermediate obj 
var tObj = fastXmlParser.getTraversalObj(xmlData,options); 
var jsonObj = fastXmlParser.convertToJson(tObj); 

而在浏览器中

var isValid = parser.validate(xmlData); 
var jsonObj = parser.parse(xmlData); 
+0

但请注意局限性部分:“解析器不检查XML是否有效”。 (我怀疑“有效”的意思是“良性”)。可悲的是,为Javascript找到一个高质量的XML解析器非常困难(我还没有成功)。我不认为解析器具有良好的一致性,除非它将结果发布到W3C一致性测试(https://www.w3.org/XML/Test/xmlconf-20020606.htm) –

+0

它取决于使用案例。性能最高的解析器通常会牺牲速度的xml验证。 –

+0

我看了一下源代码,这看起来像是一个业余爱好者在下午写的东西。它甚至不处理像字符和实体引用这样的基本事物。作者似乎并不知道XML世界中使用的术语“良构”和“有效”的正确含义。它不会产生一个DOM树,这在OP的要求中肯定是隐含的。 –

相关问题