simplexml_load_string没有创建对象

时间:2013-08-09 21:44:51

标签: php simplexml

我的XML是:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <FindOrders xmlns="http://www.JOI.com/schemas/ViaSub.WMS/">
         <orders>
            <order>
               <MarkForName />
               <BatchOrderID />
               <CreationDate>2013-08-09T17:41:00</CreationDate>
               <EarliestShipDate />
               <ShipCancelDate />
               <PickupDate />
               <Carrier>USPS</Carrier>
               <BillingCode>Prepaid</BillingCode>
               <TotWeight>0.00</TotWeight>
               <TotCuFt>0.00</TotCuFt>
               <TotPackages>1.0000</TotPackages>
               <TotOrdQty>1.0000</TotOrdQty>
               <TotLines>1.00</TotLines>
               <Notes />
               <OverAllocated />
               <PickTicketPrintDate />
               <ProcessDate />
               <TrackingNumber />
               <LoadNumber />
               <BillOfLading />
               <MasterBillOfLading />
               <ASNSentDate />
               <ConfirmASNSentDate />
               <RememberRowInfo>398879:12:2:::0:False</RememberRowInfo>
            </order>
         </orders>
      </FindOrders>
      <totalOrders xmlns="http://www.JOI.com/schemas/ViaSub.WMS/">1</totalOrders>
   </soap:Body>
</soap:Envelope>

当我这样做时:

$a = simplexml_load_string($str);

print_r($a);

我得到:SimpleXMLElement Object ( )而不是包含所有这些参数的对象。这是为什么?

2 个答案:

答案 0 :(得分:1)

您缺少SOAP的namespace declaration (php manual)

$a = simplexml_load_string($str);
$a->registerXPathNamespace('soap', 'http://www.w3.org/2003/05/soap-envelope');

$result = $a->xpath('//soap:Body');

print_r($result);

结果(preview

Array
(
    [0] => SimpleXMLElement Object
        (
            [FindOrders] => SimpleXMLElement Object
                (
                    [orders] => SimpleXMLElement Object
                        (
                            [order] => SimpleXMLElement Object
  ...
  ...

答案 1 :(得分:0)

我猜你说当你想要看到一个包含所有这些参数的对象时,你想要输出你刚刚创建的xml文档。

查看http://www.php.net/manual/en/simplexmlelement.asxml.php处的文档,以下是您需要做的事情:

echo $a->asXML();