在 javascript 中解析 UTF-8 XML
Parse UTF-8 XML in javascript
我正在尝试使用节点以及 xpath
和 xmldom
包在 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,则存在许多解析错误,cvNode
是 undefined
.
在 node/javascript 中是否有解析 UTF-8 XML 的正确方法?我这辈子都找不到像样的例子了。
当您看到每个字母之间有额外的空格时,这表明该文件实际上并未使用 utf-8 编码,而是使用了 16 位 unicode 编码。
尝试'utf16le'
。
有关支持的编码列表,请参阅 Buffers and Character Encodings。
我正在尝试使用节点以及 xpath
和 xmldom
包在 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,则存在许多解析错误,cvNode
是 undefined
.
在 node/javascript 中是否有解析 UTF-8 XML 的正确方法?我这辈子都找不到像样的例子了。
当您看到每个字母之间有额外的空格时,这表明该文件实际上并未使用 utf-8 编码,而是使用了 16 位 unicode 编码。
尝试'utf16le'
。
有关支持的编码列表,请参阅 Buffers and Character Encodings。