我正在尝试使用 Node 和 xpath
和 xmldom
包在 javascript 中加载和解析一个简单的 utf-8 编码的 XML 文件。没有使用 XML namespace ,并且在转换为 ASCII 时解析相同的 XML。我可以在 VS Code 的调试器中看到字符串在每个字符之间嵌入了空格(肯定是由于错误地加载了 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-8 XML 的正确方法?我这辈子都找不到像样的例子。
最佳答案
当您在每个字母之间看到额外的空格时,这表明该文件实际上并未使用 utf-8 编码,而是使用了 16 位 unicode 编码。
试试 'utf16le'
。
有关支持的编码列表,请参阅 Buffers and Character Encodings .
关于javascript - 在 javascript 中解析 UTF-8 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58940574/