Как получить данные между тегами XML в node.js - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь получить данные из тегов XML и присвоить им переменную в узле JS, и вот что я попробовал.

 //Sample XML
let sampleXML = "<Response>
                   <Header>
                     <tag1>I am trying to get this</tag1>
                     <tag2>This one too</tag2>
                   </Header>
                   <Detail>
                     <tag1>XYZ</tag1>
                     <tag2>ABC</tag2>
                   </Detail>
              </Response>"




var betweenString = sampleXML.match(/<Header>([^<]*)<\/Header>/);

console.log('Between String:' + betweenString);

Это дает мне нулевое значение между строкой.Может ли кто-нибудь помочь мне с этим?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Кроме того, что этот вопрос относится только к Node.js, он является дубликатом Найдите все между двумя тегами XML с помощью RegEx - и вам следует особенно прочитать ответ, объясняющий, почему обрабатывается XMLиспользование регулярных выражений - очень плохая идея.

0 голосов
/ 20 сентября 2019

Вы можете попробовать это, это, вероятно, безопаснее и точнее, чем использование регулярных выражений (в случае, если у вас есть несколько тегов с одинаковым именем в XML-документе.

const { transform } = require('camaro')
let sampleXML = `<Response>
                   <Header>
                     <tag1>I am trying to get this</tag1>
                     <tag2>This one too</tag2>
                   </Header>
                   <Detail>
                     <tag1>XYZ</tag1>
                     <tag2>ABC</tag2>
                   </Detail>
              </Response>`




;(async function () {
    const template = {
        betweenString: 'raw(Response/Header)'
    }

    const result = await transform(sampleXML, template)
    console.log('Between String:' + result.betweenString)

})()

output

Between String:<Header>
        <tag1>I am trying to get this</tag1>
        <tag2>This one too</tag2>
</Header>

это работает путем синтаксического анализа xml, получения узла (через xpath - мы указываем, где его получить Response/Header) и печати текста узла, однако, в вашем случае, вы, вероятно, захотите удалить open и close Headerтег после разбора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...