如何使用Node 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, '<'); return (xml); }
并把它放到一个valueProcessor中:
return parse.parseString(xml, {valueProcessors: [escapeIllegalCharacters]});
但是我仍然得到相同的错误。 这是错误的方式来使用xml2js模块转义字符?
您需要在调用parseString
之前转义&符号。
你可以使用这个答案的正则expression式来逃避本身不是espace序列的一部分的&符号:
return parse.parseString( xml.replace(/&(?!(?:apos|quot|[gl]t|amp);|#)/g, '&') );
这是否能解决你的问题将取决于你的XML的内容。 例如,这个过分简化的机制也会在CDATA
部分中CDATA
任何&符号,但这些部分中的&符号应该不作任何处理。
- 如何读取Node JS中的servlet响应输出stream?
- Nodejs PUT请求与参数
- 在Node Js中从accdb获取表名
- 删除&符号node.js POST请求
- 在ES6 + babel中用蓝鸟Promisify导入类(构造函数)
- Node.js和Express中应该在哪里find一个数据库configuration文件?
- Node.jsasynchronous循环function
- 如何使用algorithmRSA / ECB / PKCS1Padding通过encryptionstring的node.js进行encryption
- async调用基类的构造函数之后,无法在子类上设置属性。 NodeJS v8.2.1