xml - 使用 Typescript 和 xml2js 解析 XML
问题描述
我正在尝试使用 Express 并解析 XML 正文。我正在将 bodyparser 用于文本,但无法让 xml2js 将我的 XML 解析为可用格式。
import * as xml2js from 'xml2js';
try {
const XML:string = '<Pan>0000000000000702203</Pan>';
xml2js.parseString(XML, {trim: true}, function (err, result) {
if(err) console.log(err);
console.log(result);
});
} catch (e) {
console.log(e);
}
要么不起作用:
try {
xml2js.parseString(XML, {trim: true}, (err, result) => {
if(err) console.log(err);
console.log(result);
});
} catch (e) {
console.log(e);
}
在 VSCode 调试器中运行此代码时,代码会立即跳过该函数并且不处理 xml2js.parseString()。err 和 result 永远不会得到值。
我也尝试过使用 Parser() 类:
const p:xml2js.Parser = new xml2js.Parser();
p.parseString(XML, (err:{}, result:{}) => {
if(err) console.log(err);
console.log(result);
});
p.parseString(XML, function(err:{}, result:{}) {
if(err) console.log(err);
console.log(result);
});
这做同样的事情并且不起作用或填充错误,结果。
更新:2018 年 10 月 11 日:我已尝试对此进行调试,看来 sax.parser 正在工作并返回数据。我做了以下事情:
console.log(xml2js.parseString(XML, (err, result) => {
if (err) {
console.log(err);
}
});
我确实得到了 SaxParser 作为 VSCode 中的一个对象返回,我可以查询并查看我的结果,但我没有调用我的回调函数。
调试:
SAXParser {comment: "", sgmlDecl: "", textNode: "", tagName: "", doctype: "", …}
xml2js.parseString 虽然应该不返回任何内容,因为定义将其视为无效。
解决方案
import xml2js from 'xml2js';
async parseXml(xmlString: string) {
return await new Promise((resolve, reject) => xml2js.parseString(xmlString, (err, jsonData) => {
if (err) {
reject(err);
}
resolve(jsonData);
}));
推荐阅读
- azure - Azure 逻辑应用中服务总线连接器的消息处理策略
- mongodb - Mongodb:连接被拒绝
- ios - 适用于所有 iPhone 设备的图像调整器
- javascript - JavaScript为数组中不存在的键添加零
- python - 我在使用 Telepot 运行 Telegram Bot 时遇到问题
- python - python lockf:LOCK_EX 有效,但 LOCK_SH 无效
- redux - combineReducers 破坏了简单的单元测试?初始状态行为已更改
- c - 如何将相同长度的两个数组中的公共值复制到另一个没有重复的数组中?
- oracle11g - 有没有办法将列名作为日期的csv导入oracle?
- java - 嵌入式的休眠延迟加载字段