在 javascript 中解析 UTF-8 XML

Parse UTF-8 XML in javascript

我正在尝试使用节点以及 xpathxmldom 包在 javascript 中加载和解析一个简单的 utf-8 编码 XML 文件。没有使用 XML 命名空间,并且在转换为 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,则存在许多解析错误,cvNodeundefined.

在 node/javascript 中是否有解析 UTF-8 XML 的正确方法?我这辈子都找不到像样的例子了。

当您看到每个字母之间有额外的空格时,这表明该文件实际上并未使用 utf-8 编码,而是使用了 16 位 unicode 编码。

尝试'utf16le'

有关支持的编码列表,请参阅 Buffers and Character Encodings