我尝试使用node和
xpath
和
xmldom
包装。没有使用XML名称空间,转换为ASCII时会解析相同的XML。在VS代码中的调试器中,我可以看到字符串在每个字符之间都嵌入了空格(这肯定是因为错误地加载了utf-8文件),但我找不到正确加载和分析utf-8文件的方法。
代码:
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);
如果文件是ASCII,则代码可以正常工作(
textContent
有正确的数据),但如果是UTF-8,则有许多解析错误和
cvNode
是
undefined
.
在node/javascript中有没有正确的解析UTF-8xml的方法?我一生都找不到一个像样的例子。