2017-08-15 46 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的要求中肯定是隱含的。 –

相關問題