我正在尝试使用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.PARSESTRIN()。错误和结果永远得不到值。
我也尝试过使用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应该不会返回任何内容,因为定义将其作为void。

最佳答案

您可以尝试使用JSON.stringify(result)

08-03 14:18
查看更多