2015-08-10 3 views
1

Я работаю на сайте недвижимости. Я хочу сгенерировать свойство xml-файл с значением свойства, удобства и свойств. Формат XML должен быть как ниже: -Создание многоуровневого xml с помощью php

<Listings> 
<listing> 
<count>1</count> 
<Ad_Type>Rent</Ad_Type> 
<Unit_Type/> 
<Unit_Model/> 
<Primary_View/> 
<Unit_Builtup_Area>240.00</Unit_Builtup_Area> 
<No_of_Bathroom>1</No_of_Bathroom> 
<Property_Title>Small office with attached toilet</Property_Title> 
<Web_Remarks/> 
<Emirate/> 
<Community>Deira</Community> 
<Property_Name>Gold Souq</Property_Name> 
<Property_Ref_No>AMB-R-1238</Property_Ref_No> 
<Listing_Agent>Agent Name</Listing_Agent> 
<Listing_Agent_Phone>Agent Phone</Listing_Agent_Phone> 
<Listing_Date>2015-08-07 06:31:37</Listing_Date> 
<Last_Updated/> 
<Bedrooms/> 
<Listing_Agent_Email>Agent Email</Listing_Agent_Email> 
<Price>60000</Price> 
<Unit_Reference_No>AMB-R-1238</Unit_Reference_No> 
<No_of_Rooms/> 
<Latitude>25.275016</Latitude> 
<Longitude>55.307751</Longitude> 
<unit_measure>Sq.Ft.</unit_measure> 
<Featured>0</Featured> 
<Images> 
<image> 
Image Url 
</image> 
<image> 
Image Url 
</image> 
<image> 
Image Url 
</image> 
</Images> 
<company_name/> 
<Web_Tour/> 
<Threesixty_Tour/> 
<Audio_Tour/> 
<Virtual_Tour/> 
<QR_Code/> 
<company_logo>My Site Logo URL</company_logo> 
<Parking>0</Parking> 
<Strno/> 
<PreviewLink/> 
</listing> 
</Listings> 

Я сгенерировал файл с кодом ниже: -

$property_detail = $db->Select("property","*"); 
         $xml = new DOMDocument("1.0"); 
         $root = $xml->createElement("Listings"); 
         $xml->appendChild($root); 
         foreach($property_detail as $key => $propval){ 
          $AgentDet = $db->GetRow("user_details", "first_name,last_name,mobile_number,email_address","user_id = :user_id",array("user_id"=>$propval['user_id'])); 
          $Agentname = $AgentDet["first_name"]." ".$AgentDet["last_name"]; 

          if($key == 0){ 
           $key = 1; 
          }else{ 
           $key = $key + 1; 
          } 

          if($propval["status"] == "0"){ 
           $adTypeVal = "Rent"; 
          }else if($propval["status"] == "1"){ 
           $adTypeVal = "Commercial"; 
          }else if($propval["status"] == "2"){ 
           $adTypeVal = "Sale"; 
          }else if($propval["status"] == "3"){ 
           $adTypeVal = "Sublet"; 
          }else if($propval["status"] == "4"){ 
           $adTypeVal = "rooms"; 
          }else if($propval["status"] == "5"){ 
           $adTypeVal = "Land"; 
          } 

          $count = $xml->createElement("count"); 
          $countText = $xml->createTextNode($key); 
          $count->appendChild($countText); 

          $Ad_Type = $xml->createElement("Ad_Type"); 
          $Ad_TypeText = $xml->createTextNode($adTypeVal); 
          $Ad_Type->appendChild($Ad_TypeText); 

          $Unit_Type = $xml->createElement("Unit_Type"); 
          $Unit_TypeText = $xml->createTextNode(""); 
          $Unit_Type->appendChild($Unit_TypeText); 

          ... // a lot of other properties 

          $book = $xml->createElement("listing"); 
          $book->appendChild($count); 
          $book->appendChild($Ad_Type); 
          $book->appendChild($Unit_Type); 
          $book->appendChild($Unit_Model); 
          $book->appendChild($Primary_View); 
          $book->appendChild($Unit_Builtup_Area); 
          $book->appendChild($No_of_Bathroom); 
          $book->appendChild($Property_Title); 
          $book->appendChild($Web_Remarks); 
          $book->appendChild($Emirate); 
          $book->appendChild($Community); 
          $book->appendChild($Property_Name); 
          $book->appendChild($Property_Ref_No); 
          $book->appendChild($Listing_Agent); 
          $book->appendChild($Listing_Agent_Phone); 
          $book->appendChild($Listing_Date); 
          $book->appendChild($Last_Updated); 
          $book->appendChild($Bedrooms); 
          $book->appendChild($Listing_Agent_Email); 
          $book->appendChild($Price); 
          $book->appendChild($Unit_Reference_No); 
          $book->appendChild($No_of_Rooms); 
          $book->appendChild($Latitude); 
          $book->appendChild($Longitude); 
          $book->appendChild($unit_measure); 
          $book->appendChild($Featured); 
          $book->appendChild($company_name); 
          $book->appendChild($Web_Tour); 
          $book->appendChild($Threesixty_Tour); 
          $book->appendChild($Audio_Tour); 
          $book->appendChild($Virtual_Tour); 
          $book->appendChild($QR_Code); 
          $book->appendChild($company_logo); 
          $book->appendChild($Parking); 
          $book->appendChild($Strno); 
          $book->appendChild($PreviewLink); 
          $root->appendChild($book); 
          $xml->formatOutput = true; 
          echo "<xmp>". $xml->saveXML() ."</xmp>"; 
          $xml->save("../propertyxml/mybooks.xml") or die("Error"); 
          exit; 
         } 

Все работает отлично. Я получаю тот же результат, за исключением Property Image Detail. Как добавить еще один узел изображения в этот xml-код? Я использую следующий код для этого:

//This is where i am forming the imagenames 
foreach($propimageDetail as $p => $image){ 
    $img = $xml->createElement("image"); 
    $imgText = $xml->createTextNode($image["property_imagename"]); 
    $img->appendChild($imgText); 
} 

//This is where i am appending the imagenames 
foreach($propimageDetail as $p => $image){ 
    $Images->appendChild($img); 
} 

ответ

1

Вы не должны использовать две Foreach петли - вы перезапись $img каждый раз. Вам нужно создать Images узел первым, и только потом петли над $propImageDetail:

$Images = $xml->createElement("images"); 
foreach($propimageDetail as $p => $image){ 
    $img = $xml->createElement("image"); 
    $imgText = $xml->createTextNode($image["property_imagename"]); 
    $img->appendChild($imgText); 
    $Images->appendChild($img); 
} 
+0

я бы сделал то же, но он показывает только 1 значение в изображении Eventhough имущества, имеющие 9 изображений –

+0

Can вы обновляете свой код с помощью того, что вы пробовали? – Glorfindel

+0

Я не могу опубликовать его здесь из-за ограничения длины символов –

Смежные вопросы