【问题标题】:Parse XML response in javascript. get value of specific tag in javascript在 javascript 中解析 XML 响应。获取javascript中特定标签的值
【发布时间】:2020-08-02 21:42:28
【问题描述】:

我有 xml 响应。我想在<return> 标签中获取“respuesta”的值。

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://">
    <S:Body>
        <ns2:cardtransactionResponse xmlns:ns2="http://">
            <return>
                {
                 "terminalid":"00250425",
                 "retailerid":"000000001848033",
                 "trantime":"151333",
                 "referencia":"021515133324",
                 "networkid":"024",
                 "respuesta":"00",
                 "trandate":"0802",
                 "tipomensaje":"000000",
                 "auditno":"000016"
                 }
            </return>
        </ns2:cardtransactionResponse>
    </S:Body>
</S:Envelope>

【问题讨论】:

  • 您在询问如何在 JavaScript 中解析 XML。我看不出这与 HTML 或 PHP 有什么关系,所以我从你的问题中删除了这些标签。下次请只为您的问题添加相关标签。

标签: javascript parsing xml-parsing


【解决方案1】:

如果您想使用正则表达式方法解析此 json,您可以尝试以下方法:

const responsemsg = `<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://">
<S:Body>
    <ns2:cardtransactionResponse xmlns:ns2="http://">
        <return>
            {
             "terminalid":"00250425",
             "retailerid":"000000001848033",
             "trantime":"151333",
             "referencia":"021515133324",
             "networkid":"024",
             "respuesta":"00",
             "trandate":"0802",
             "tipomensaje":"000000",
             "auditno":"000016"
             }
        </return>
    </ns2:cardtransactionResponse>
</S:Body>
</S:Envelope>`
const regexexp = /\"respuesta\"\:(.+?)\,/
const respuestaMatch = regexexp.exec(responsemsg);
console.log(respuestaMatch[0])
//""respuesta":"00","
console.log(respuestaMatch[1])
//"00"

如果您想了解更多关于正则表达式的信息,follow link

【讨论】:

    【解决方案2】:

    由于您正在处理 xml,因此处理它的最佳方法是使用 xpath:

    const xmlstring = `[your xml above]`
    let DOMParser = require('xmldom').DOMParser,
      doc = new DOMParser().parseFromString(xmlstring),
      xpath = require('xpath'), 
      select = xpath.useNamespaces({ns2: 'ns2'}),
      target = select('//return', doc, true);
    console.log(target.toString().split( '"respuesta":')[1].split( ',')[0]);
    

    输出:

    "00"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      • 2011-11-08
      相关资源
      最近更新 更多