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