我有一个包含 & 的 xml 文档,所以我得到了一个错误
[Error: Invalid character in entity name
Line: 155
Column: 63
Char: ]
我写了一个函数来转义非法的xml字符:
const escapeIllegalCharacters = (xml) => {
xml = xml
.replace(/&/g,'&')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/>/g, '>')
.replace(/</g, '<');
return (xml);
}
并将其放入 valueProcessor 中:
return parse.parseString(xml, {valueProcessors: [escapeIllegalCharacters]});
但我仍然遇到同样的错误。这是使用 xml2js 模块转义字符的错误方法吗?
最佳答案
在调用 parseString
之前,您需要对 & 符号进行转义。
您可以使用 this answer 中的正则表达式转义本身不属于空格序列的&符号:
return parse.parseString(
xml.replace(/&(?!(?:apos|quot|[gl]t|amp);|#)/g, '&')
);
这是否会解决您的问题将取决于您的 XML 的内容。例如,这种简单的机制还将转义 CDATA
部分中的任何 & 符号,但这些部分中的 & 符号应保持未转义。
关于node.js - 如何使用 Node xml2js 模块转义字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41902971/