使用SimpleXMLElement创建XML

问题描述 投票:0回答:1
<?php
$xml =new SimpleXMLElement('<OTA_HotelAvailRQ></OTA_HotelAvailRQ>');

$xml->addChild("AvailRequestSegments");
    $AvailRequestSegment = $xml->addChild("AvailRequestSegment");
        $StayDateRange = $AvailRequestSegment->addChild("StayDateRange");
                $StayDateRange->addAttribute("Duration", "P2N");
                $StayDateRange->addAttribute("Start", $Start);
                $StayDateRange->addAttribute("End", $End);
        $RoomStayCandidates = $AvailRequestSegment->addChild("RoomStayCandidates");
                $RoomStayCandidates->addAttribute("123", "321");

        $HotelSearchCriteria = $AvailRequestSegment->addChild("HotelSearchCriteria");

echo $xml->asXML();
?>

我需要生成的XML是

<OTA_HotelAvailRQ>
   <AvailRequestSegments>
      <AvailRequestSegment>
         <StayDateRange Duration="P2N" Start="2018-10-17+03:00" End="2018-10-19+03:00" />
         <RoomStayCandidates>
            <RoomStayCandidate Quantity="1">
               <GuestCounts IsPerRoom="true">
                  <GuestCount Count="2" AgeQualifyingCode="10" />
               </GuestCounts>
            </RoomStayCandidate>
         </RoomStayCandidates>
         <HotelSearchCriteria>
            <Criterion ExactMatch="false">
               <Position />
               <Address FormattedInd="true">
                  <CityName>Athens Center</CityName>
                  <County>'.$Country.'</County>
                  <CountryName Code="GR" />
               </Address>
            </Criterion>
         </HotelSearchCriteria>
      </AvailRequestSegment>
   </AvailRequestSegments>
</OTA_HotelAvailRQ>

但是,每当我向$AvailRequestSegment添加一个子级[RoomStayCandidates]节点时,该节点都将被添加为$StayDateRange的子级。

为我的代码生成的XML是XML Generated for My code

我认为我的代码是正确的。但我没有得到确切的输出。请在这方面提供帮助。TIA

php xml simplexml
1个回答
0
投票
<?php
$xml =new SimpleXMLElement('<OTA_HotelAvailRQ></OTA_HotelAvailRQ>');

$xml->addChild("AvailRequestSegments");
    $AvailRequestSegment = $xml->addChild("AvailRequestSegment");
        $StayDateRange = $AvailRequestSegment->addChild("StayDateRange");
                $StayDateRange->addAttribute("Duration", "P2N");
                $StayDateRange->addAttribute("Start", $Start);
                $StayDateRange->addAttribute("End", $End);
        $RoomStayCandidates = $AvailRequestSegment->addChild("RoomStayCandidates");
                $RoomStayCandidates->addAttribute("123", "321");

        $HotelSearchCriteria = $AvailRequestSegment->addChild("HotelSearchCriteria");

echo $xml->asXML();
?>

此工作。谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.