解析肥皂xml文件php

时间:2014-10-06 19:25:52

标签: php xml soap

我有这个SOAP响应。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
    <pkup:PickupPendingStatusResponse xmlns:pkup="http://www.ups.com/XMLSchema/XOLTWS/Pickup/v1.1">
        <common:Response xmlns:common="http://www.ups.com/XMLSchema/XOLTWS/Common/v1.0">
            <common:ResponseStatus>
                <common:Code>1</common:Code>
                <common:Description>Success</common:Description>
            </common:ResponseStatus>
        </common:Response>
        <pkup:PendingStatus>
            <pkup:PickupType>01</pkup:PickupType>
            <pkup:ServiceDate>20141006</pkup:ServiceDate>
            <pkup:PRN>2929AONCALL</pkup:PRN>
            <pkup:OnCallStatusCode>001</pkup:OnCallStatusCode>
            <pkup:PickupStatusMessage>Received at dispatch</pkup:PickupStatusMessage>
            <pkup:BillingCode>01</pkup:BillingCode>
            <pkup:ContactName>Shipping Mgr.</pkup:ContactName>
            <pkup:ReferenceNumber>OnCallNextDayAir</pkup:ReferenceNumber>
        </pkup:PendingStatus>
    </pkup:PickupPendingStatusResponse>
</soapenv:Body>

我需要获得PickupPendingStatusResponse->Response->ResponseStatus->Description

我还希望pkup:PendingStatus成为array,并且能够获得每个孩子的价值。

1 个答案:

答案 0 :(得分:0)

我使用DOMDocument类来获取节点

$doc = new DOMDocument();
$doc->loadXML($upsResponse);
$PRN =  $doc->getElementsByTagName('PRN')->item(0)->nodeValue;
$success =  $doc->getElementsByTagName('Description')->item(0)->nodeValue;