繁体   English   中英

在Jquery Ajax中解析嵌套的XML响应

[英]Parsing nested XML response in Jquery Ajax

我正在编写一个asp.net Web API Web服务。 除了服务之外,我还编写了一个测试器,以便可以测试Web服务。

测试仪允许您发布和接收JSON或XML。 我正在使用jquery ajax处理响应。 我使用JSON很好,下面的工作正常。

JSON响应

{"ItemLabel":
    {"Requisition":"W44DQ18255TS42 ",
    "Nsn":"5999-01-100-5901",
    "FscNiin":"5999011005901 ",
    "Cage":"1CAY9",
    "PartNumber":"",
    "Nomen":"CONTACT,ELECTRICAL ",
    "Quantity":"1",
    "Ui":"EA",
    "UiDesc":"",
    "PurchOrderNbr":"SPM907-85-5-4444",
    "RlseNbr":"TS0042",
    "Clin":"0042 ",
    "Lot":"",
    "Preservation":"",
    "DatePreserved":"",
    "ShelfType":"",
    "Shelf1":"",
    "Exp1":"",
    "CureDt1":"",
    "CureInsp1":"",
    "Shelf2":"",
    "Exp2":"",
    "CureDt2":"",
    "CureInsp2":"",
    "Serials":"",
    "Serial":null,
    "SerialInters":null,
    "UnitPerInt":"1",
    "TypeLbl":"ITEMx1"
    },
"filePaths":["https://xxxxxxxxxxx.dir.ad.dla.mil/pdf/email_ITEMLBL__W44DQ18255TS42 _682895.pdf"]
}

我可以使用jquery ajax处理结果,如下所示。

 success: function (result) {
                            $('#Spinner129').hide();
                            self.jsonResponse129(JSON.stringify(result));
                            self.hasSuccess129(true);
                            self.successMessage129("Success! Please view the response in the JSON Response tab below.");
                            $.each(result.filePaths, function (i, path) {
                                window.open(path, '_blank');                               
                            });
                        },

尽管我在用xml响应做一些相同的事情时还是很费劲,但我如何获取文件路径中的值?

这是xml响应

<FobOriginWebService129PLabelOutput xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/VSM">
    <ItemLabel>
        <Cage>1CAY9</Cage>
        <Clin>0042  </Clin>
        <CureDt1></CureDt1>
        <CureDt2></CureDt2>
        <CureInsp1></CureInsp1>
        <CureInsp2></CureInsp2>
        <DatePreserved></DatePreserved>
        <Exp1></Exp1>
        <Exp2></Exp2>
        <FscNiin>5999011005901      </FscNiin>
        <Lot></Lot>
        <Nomen>CONTACT,ELECTRICAL </Nomen>
        <Nsn>5999-01-100-5901</Nsn>
        <PartNumber i:nil="true" />
        <Preservation></Preservation>
        <PurchOrderNbr>SPM907-85-5-4444</PurchOrderNbr>
        <Quantity>1</Quantity>
        <Requisition>W44DQ18255TS42 </Requisition>
        <RlseNbr>TS0042</RlseNbr>
        <Serial i:nil="true" />
        <SerialInters i:nil="true" />
        <Serials></Serials>
        <Shelf1></Shelf1>
        <Shelf2></Shelf2>
        <ShelfType>SHL0</ShelfType>
        <TypeLbl>ITEMx1</TypeLbl>
        <Ui>EA</Ui>
        <UiDesc></UiDesc>
        <UnitPerInt>1</UnitPerInt>
    </ItemLabel>
    <filePaths xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        <d2p1:string>https://xxxxxxxxxxx.dir.ad.dla.mil/pdf/email_ITEMLBL__W44DQ18255TS42 _405955.pdf</d2p1:string>
       </filePaths>
</FobOriginWebService129PLabelOutput>

不知道如何在jquery ajax成功部分中处理它,这是我的尝试。

 success: function (result) {
                            $('#Spinner129').hide();
                            self.hasSuccess129(true);                          
                            self.successMessage129("Success! Please view the response in the XML Response tab below.");
                            self.xmlResponse129(JSON.stringify(result));
                           // xmlDoc = $.parseXML(result),
                         //  $xml = $(xmlDoc),
                          // $filePath = $xml.find("filePaths");
                          //  now what?
                        },

文件路径嵌套在filePaths节点的子级中。

<filePaths xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
   <d2p1:string>https://xxxxxxxxxxx.dir.ad.dla.mil/pdf/email_ITEMLBL__W44DQ18255TS42 _405955.pdf</d2p1:string>
</filePaths>

一旦拥有$filePaths ,如下所示:

$filePaths = $xml.find("filePaths");

您可以访问其子级,然后获取其文本:

$filePaths.children().each(function () { 
    //console.log($(this).text()); // print to test
    // https://xxxxxxxxxxx.dir.ad.dla.mil/pdf/email_ITEMLBL__W44DQ18255TS42 _405955.pdf

    // open in new window
    window.open($(this).text(), '_blank');         
});

一切看起来都很好。 要获取filePath值,请尝试以下操作:

$filePath.text();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM