【问题标题】:How to parse xml with javascript find method?如何使用 javascript find 方法解析 xml?
【发布时间】:2015-04-16 12:24:34
【问题描述】:

我正在使用 JavaScript 解析 xml。

我目前的代码;

xmlDoc = $.parseXML( fnSuccess.__batchResponses[0].response.body ),
            $xml = $( xmlDoc ),
            $errormessage = $xml.find( "message" );

$errormessage.text() 及其返回:

<code>SY/530</code>
<message xml:lang="en">S:W5:102 0010017899</message>
<innererror>
<transactionid>A831E4E4ADFDF1998E50005056AA3F7A</transactionid>
<timestamp/><Error_Resolution><SAP_Transaction/><SAP_Note/></Error_Resolution>
<errordetails><errordetail><

code>W5/102</code>
<message>S:W5:102 0010017899</message>

<propertyref/>
<severity>error</severity>
</errordetail><errordetail>

<code>W5/102</code>
<message>S:W5:102 0010017899</message>
<propertyref/>
<severity>error</severity>
</errordetail><errordetail>

<code>/IWBEP/CX_SD_GEN_DPC_BUSINS</code>
<message> --- Order is checked and approved ----</message>
<propertyref/>
<severity>error</severity>
</errordetail></errordetails>
</innererror></error> 

但我只想得到 --- 订单已检查和批准 ---- /IWBEP/CX_SD_GEN_DPC_BUSINS

如何使用 $errormessage = $xml.find( "message" ); 上的哪个参数获取它;

谢谢..

【问题讨论】:

  • 到目前为止你尝试了什么?您的代码显示什么错误?
  • 什么是“fnSuccess.__batchResponses[0].response.body”?
  • 我只是使用 $errormessage = $xml.find( "message" );方法并获取所有错误消息。但我只想得到 --- 订单已检查并批准 ---- 行。如何解析它?我尝试了 $xml.find("message").eq(3) 及其工作,但错误长度可以改变
  • grimbode 它返回一个 xml 页面。我分享了返回的页面。
  • 是的,我试过了。它返回所有消息。但我想得到特别的消息。

标签: javascript xml parsing


【解决方案1】:

这是我的版本 - 花了一段时间所以有人在我玩的时候发布了

显示

--- Order is checked and approved ----

    var xml = '<error><code>SY/530</code><message xml:lang="en">S:W5:102 0010017899</message><innererror><transactionid>A831E4E4ADFDF1998E50005056AA3F7A</transactionid><timestamp/><Error_Resolution><SAP_Transaction/><SAP_Note/></Error_Resolution><errordetails><errordetail><code>W5/102</code><message>S:W5:102 0010017899</message><propertyref/><severity>error</severity></errordetail><errordetail><code>W5/102</code><message>S:W5:102 0010017899</message><propertyref/><severity>error</severity></errordetail><errordetail><code>/IWBEP/CX_SD_GEN_DPC_BUSINS</code><message> --- Order is checked and approved ----</message><propertyref/><severity>error</severity></errordetail></errordetails></innererror></error>'
    
    var xmlDoc = $.parseXML(xml),$xml = $(xmlDoc);
    var messages = $xml.find("message");
    var message = messages.filter(function(i,msg) {
        console.log(msg)
         return msg.textContent.indexOf("---") !=-1;
    });
    console.log(message[0].textContent)
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

    【解决方案2】:
    $errormessage.find('message').eq(2).text()
    

    将返回:“---订单已检查并批准----”

    Demo

    更新:您有几个解决方案。如果您的错误消息总是以“---”开头,那么:

    $errormessage.find('message').filter(function(){
        return ($(this).text().trim().substring(0, 3) == '---')
    }).text()
    

    Demo2

    如果你想通过代码消息“/IWBEP/CX_SD_GEN_DPC_BUSINS”,那么:

    $errormessage.find('code').filter(function(){
        return ($(this).text() == '/IWBEP/CX_SD_GEN_DPC_BUSINS')
    }).next().text()
    

    Demo3

    【讨论】:

    • 我试过了,但他的消息数量可以改变..我可以在代码>W5/102之后用获取消息来调用它吗?或 find('message') 以 ---order 开头?
    • 这个“/IWBEP/CX_SD_GEN_DPC_BUSINS”会一直一样吗?
    • 是的。谢谢ssss它的工作:) .next('message').text() 有用吗? bkz 现在它不稳定。也许我们可以最特别地查询..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多