解析xml的字符实体无效

jro*_*004 6 node.js xml2js

我试图解析一串xml,我收到一个错误

[Error: Invalid character entity
Line: 0
Column: 837
Char:  ]
Run Code Online (Sandbox Code Playgroud)

xml不喜欢括号吗?我是否需要用\\]等替换所有括号.谢谢

jro*_*004 8

好的,无效字符是短划线和&.我通过执行以下操作修复了它:

xml = data.testSteps.replace(/[\n\r]/g, '\\n')
                    .replace(/&/g,"&")
                    .replace(/-/g,"-");
Run Code Online (Sandbox Code Playgroud)

谢谢


Jor*_*J.D 5

使用节点domparser可以避免对每个不容易解析为字符串的字符进行字符串替换。如果您要解析大量可能具有不同字符的XML,则此功能特别有用。

我会推荐xmldom,因为我已经成功将它与xml2js一起使用了

组合用法如下所示:

var parseString = require('xml2js').parseString;
var DOMParser = require('xmldom').DOMParser;

var xmlString = "<test>some stuff </test>";
var xmlStringSerialized = new DOMParser().parseFromString(xmlString, "text/xml");
    parseString(xmlStringSerialized, function (err, result) {
        if (err) {
            //did not work
        } else {
            //worked! use JSON.stringify() 
            var allDone = JSON.stringify(result);
        }
    });
Run Code Online (Sandbox Code Playgroud)