node.js - 如何使用 Node xml2js 模块转义字符?

标签 node.js xml xml-parsing xml2js

我有一个包含 & 的 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, '&lt;');
  return (xml);
}

并将其放入 valueProcessor 中:

return parse.parseString(xml, {valueProcessors: [escapeIllegalCharacters]});

但我仍然遇到同样的错误。这是使用 xml2js 模块转义字符的错误方法吗?

最佳答案

在调用 parseString 之前,您需要对 & 符号进行转义。

您可以使用 this answer 中的正则表达式转义本身不属于空格序列的&符号:

return parse.parseString(
  xml.replace(/&(?!(?:apos|quot|[gl]t|amp);|#)/g, '&amp;')
);

这是否会解决您的问题将取决于您的 XML 的内容。例如,这种简单的机制还将转义 CDATA 部分中的任何 & 符号,但这些部分中的 & 符号应保持未转义。

关于node.js - 如何使用 Node xml2js 模块转义字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41902971/

相关文章:

java - 从输入流 Java 解析 XML

html - 如何在我的 html 中将 svg 居中?

c# - 从 C# 中读取 XML

javascript - 引用错误 : URL is not defined in Azure javascript function

node.js - Meteor 作为 npm 模块的依赖项?错误: Cannot find module 'meteor/mongo'

Javax DocumentBuilder 生成 “double-UTF-8’ ed” 字符集编码

windows - Windows 版 OCaml 中的 XML 解析器

用于多寄存器嵌套标签的 Perl XML 编辑

javascript - 类型错误 : undefined is not a function in Node. js

node.js - 如何获取带有父子关系的json结果?(查看详情)