Kaa*_*ken 5 javascript xml node.js
我正在使用带有 KDE 等离子的 Arch Linux 系统。我有大约 50mb 的 XML,我需要解析它。该文件具有自定义标签。
示例 XML:
<JMdict>
<entry>
<ent_seq>1000000</ent_seq>
<r_ele>
<reb>?</reb>
</r_ele>
<sense>
<pos>&unc;</pos>
<gloss g_type="expl">repetition mark in katakana</gloss>
</sense>
</entry>
</JMdict>
Run Code Online (Sandbox Code Playgroud)
我曾尝试提出了Stack Overflow上的许多解决方案,他们并没有在所有的工作,其中一些无法安装到我的系统一样xml-stream
,xml2json
。我决定使用xml2js
(他们中的大多数建议使用xml2js
),并得到了相同的结果。我怎样才能正确使用它?我正在使用此代码,但它始终返回未定义:
const fs = require('fs-extra');
const xml2js = require('xml2js');
const parser = new xml2js.Parser();
const path = "test.xml";
fs.readFile(path, {encoding: 'utf-8'}, function(error, data) {
parser.parseString(data, function(err, res) {
console.log(res);
});
});
Result: Undefined
Run Code Online (Sandbox Code Playgroud)
有没有办法手动处理 XML 文件(没有包)?
答案位于工作示例链接下方
var fs = require('fs'),
slash = require('slash'),
xml2js = require('xml2js');
var parser = new xml2js.Parser();
let filename = slash(__dirname+'/foo.xml');
// console.log(filename);
fs.readFile(filename, "utf8", function(err, data) {
if(err) {
console.log('Err1111');
console.log(err);
} else {
//console.log(data);
// data.toString('ascii', 0, data.length)
parser.parseString(data.replace(/&(?!(?:apos|quot|[gl]t|amp);|#)/g, '&'), function (err, result) {
if(err) {
console.log('Err');
console.log(err);
} else {
console.log(JSON.stringify(result));
console.log('Done');
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
确切地说,您必须执行以下操作:
data.replace(/&(?!(?:apos|quot|[gl]t|amp);|#)/g, '&')
问题仅出现在标签下方&unc;
<pos>&unc;</pos>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7795 次 |
最近记录: |