Разбор XML с помощью Typescript и xml2js - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь работать с 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 ().ошибка и результат никогда не получит значения.

Я также пытался использовать его с помощью класса 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, как предполагается, ничего не возвращает, поскольку определение имеет это как пустое место.

...