在javascript中解析UTF-8XML
我试图使用node和在javascript中解析UTF-8XML,javascript,node.js,xml,utf-8,xmldom,Javascript,Node.js,Xml,Utf 8,Xmldom,我试图使用node和xpath和xmldom包在javascript中加载和解析一个简单的utf-8编码的XML文件。没有使用XML名称空间,转换为ASCII时会解析相同的XML。在VS代码中的调试器中,我可以看到字符串在每个字符之间都嵌入了空格(当然是由于加载utf-8文件不正确),但我找不到正确加载和解析utf-8文件的方法 代码: 如果文件为ASCII(textContent具有正确的数据),则代码可以正常工作,但如果文件为UTF-8,则会出现许多解析错误,cvNode未定义 在node/
xpath
和xmldom
包在javascript中加载和解析一个简单的utf-8编码的XML文件。没有使用XML名称空间,转换为ASCII时会解析相同的XML。在VS代码中的调试器中,我可以看到字符串在每个字符之间都嵌入了空格(当然是由于加载utf-8文件不正确),但我找不到正确加载和解析utf-8文件的方法
代码:
如果文件为ASCII(textContent
具有正确的数据),则代码可以正常工作,但如果文件为UTF-8,则会出现许多解析错误,cvNode
未定义
在node/javascript中是否有解析UTF-8xml的正确方法?我一生都找不到一个像样的例子。当您看到每个字母之间有额外的空格时,这表明文件实际上不是使用utf-8编码的,而是使用16位unicode编码 试试
“utf16le”
有关支持的编码列表,请参见。您是否尝试过不带减号的
'utf8'
?这是此API中用于utf-8编码的正确值。另一方面,当您在每个字母之间看到额外的空格时,这表明该文件实际上不是使用utf-8编码的,而是使用16位的编码。您是否尝试过“utf16le”?是的,对不起,输入错误。我试过了both@NineBerry“utf16le”成功了。非常感谢。如果你想添加一个正式的答案,我会标记为这样。
var xpath = require('xpath')
, dom = require('xmldom').DOMParser;
const fs = require('fs');
var myXml = "path_to_my_file.xml";
var xmlContents = fs.readFileSync(myXml, 'utf8').toString();
// this line causes errors parsing every single tag as the tag names have spaces in them from improper utf-8 decoding
var doc = new dom().parseFromString(xmlContents, 'application/xml');
var cvNode = xpath.select1("//MyTag", doc);
console.log(cvNode.textContent);