将Child元素添加到XML

时间:2014-10-06 20:53:16

标签: php xml

我有

形式的XML
$xml=<<<EOD
<?xml version="1.0" encoding="utf-8"?>
<CompleteSaleRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>AUTH_TOKEN_VALUE</eBayAuthToken>
</RequesterCredentials>
<ItemID>ItemIDVALUE</ItemID>
<TransactionID>TransactionIDVALUE</TransactionID>
<Shipped>1</Shipped>
<Paid>1</Paid>
  <Shipment>
    <ShipmentTrackingDetails>
   <ShipmentTrackingNumber>$trackingNo</ShipmentTrackingNumber>
      <ShippingCarrierUsed>UPS</ShippingCarrierUsed>
    </ShipmentTrackingDetails>
    <ShippedTime>2014-09-30 12:41:59.202303</ShippedTime>
    </Shipment>
<ErrorLanguage> string </ErrorLanguage>
EOD;

我想使用PHP附加更多ShipmentTrackingDetails部分,我需要这样生成的XML:

$xml=<<<EOD
<?xml version="1.0" encoding="utf-8"?>
<CompleteSaleRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>AUTH_TOKEN_VALUE</eBayAuthToken>
</RequesterCredentials>
<ItemID>ItemIDVALUE</ItemID>
<TransactionID>TransactionIDVALUE</TransactionID>
<Shipped>1</Shipped>
<Paid>1</Paid>
  <Shipment>
    <ShipmentTrackingDetails>
   <ShipmentTrackingNumber>$trackingNo</ShipmentTrackingNumber>
      <ShippingCarrierUsed>UPS</ShippingCarrierUsed>
    </ShipmentTrackingDetails>

 <ShipmentTrackingDetails>
   <ShipmentTrackingNumber>$trackingNo2</ShipmentTrackingNumber>
      <ShippingCarrierUsed>UPS</ShippingCarrierUsed>
    </ShipmentTrackingDetails>

 <ShipmentTrackingDetails>
   <ShipmentTrackingNumber>$trackingNo3</ShipmentTrackingNumber>
      <ShippingCarrierUsed>UPS</ShippingCarrierUsed>
    </ShipmentTrackingDetails>
    <ShippedTime>2014-09-30 12:41:59.202303</ShippedTime>
    </Shipment>
<ErrorLanguage> string </ErrorLanguage>
EOD;

PHP来源:

$sxe = new SimpleXMLElement($xml); 
$track = $sxe->addChild('ShipmentTrackingDetails'); 
$track->addChild("ShipmentTrackingNumber", "9876"); 
$track->addChild("ShippingCarrierUsed", "USPS");

我没有得到如何使用PHP这样做。 请帮助您完成这项工作。

谢谢!

1 个答案:

答案 0 :(得分:0)

我明白了, 动态部分将是:

 $sxe = new SimpleXMLElement($xml);  
    $TrackingDetails = $sxe->Shipment->addChild('ShipmentTrackingDetails'); 
    $TrackingDetails->addChild("ShipmentTrackingNumber", $trackingMore); 
    $TrackingDetails->addChild("ShippingCarrierUsed", "UPS"); 
    $sxe->asXML("tracking.xml");
    $xml1 = $sxe->saveXML();

其中$ xml是我们想要添加新子项的原始xml。