javascript - 在 javascript 中解析 UTF-8 XML

标签 javascript node.js xml utf-8 xmldom

我正在尝试使用 Node 和 xpathxmldom 包在 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,则存在许多解析错误和 cvNodeundefined

在 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/

相关文章:

javascript - 如何将 Scala 模板中的 ID 放入 AJAX 调用中?

javascript - 刷新 Bootstrap 表

javascript - Node.js MongoDB 套接字关闭错误

jquery - jQuery 解析期间显示空白页面

javascript - 为浏览器支持不可用的输入类型 ="date"添加 javascript 回退

node.js - node-postgres Error 是个什么样的对象?为什么 node 的 console.log 和 JSON.stringify 处理方式不一样?

node.js - 更新文档时在非对象上调用 TypeError : Object. 键

java - 如何使用 xmlbeans 从另一个 xml 添加节点

javascript - Python lxml 库无法解析 < 和 >

javascript - Quickblox Javascript SDK + Angular + webRTC - 无法读取未定义的属性 'send'