2014-11-04 3 views
1

У меня есть xml. как показано в приложении .. Как я могу прочитать содержимое с помощью PHPЧтение xml с атрибутами в php

http://agency.lastminute-hr.com/slike/xml_read1.jpg "XML"

Сейчас я читаю этот XML:

<? 

    $request   = new SimpleXMLElement('<HotelInfoRequest/>'); 
    $request->Username = 'SERUNCD'; 
    $request->Password = 'TA78UNC'; 
    $request->HotelID = '123'; 



    $url = "http://wl.filos.com.gr/services/WebService.asmx/HotelInfo"; 
    $result = simplexml_load_file($url . "?xml=" . urlencode($request->asXML())); 



    function RecurseXML($xml,$parent="") 
    { 
     $child_count = 0; 
     foreach($xml as $key=>$value) 
     { 
      $child_count++; 

      if(RecurseXML($value,$parent.".".$key) == 0) // no childern, aka "leaf node" 
      { 

      print($parent . "." . (string)$key . " = " . (string)$value . "<BR>\n");  
      }  
     } 
     return $child_count; 
    } 

    RecurseXML($result); 
?> 

этот результат взгляд:

.. 
.. 
.Response.Hotels.Hotel.Rooms.Room.Quantity = 0 
.Response.Hotels.Hotel.Rooms.Room.MaxPax = 3 
.Response.Hotels.Hotel.Rooms.Room.MinPax = 2 
.Response.Hotels.Hotel.Rooms.Room.RoomType.languages.lang = Room Double Standard 
.Response.Hotels.Hotel.Rooms.Room.RoomType.languages.lang = Camera single standard 
... 
... 

Мне нужно, чтобы вы указали значение и adttribut

<Rooms> 
    <Room ID = "5556"> 
     <Quantity> 0 </ Quantity> 
     <MaxPax> 3 </ MaxPax> 
     <MinPax> 2 </ MinPax> 
     <Roomtype> </ roomtype> 
</ Room> 
.... 
.. 
+0

возможно дубликат (http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in-php) – Ghost

ответ

1

Try (первая часть предназначена только для тестирования): [? Как вы разобрать и обработать HTML/XML в PHP]

$string = <<<XML 
<?xml version='1.0'?> 
<Rooms> 
    <Room ID = "5556"> 
     <Quantity> 0 </Quantity> 
     <MaxPax> 3 </MaxPax> 
     <MinPax> 2 </MinPax> 
     <Roomtype> </Roomtype> 
    </Room> 
</Rooms> 
XML; 

$result = simplexml_load_string($string); 

function RecurseXML($xml,$parent=".Response.Hotels.Hotel.Rooms"){ 
    $children = $xml->children(); 
    if (empty($children)) { 
     print($parent . "." . $xml->nodeName . " = " . (string)$xml . "<BR>\n"); 
    } 
    else { 
     foreach($children as $key=>$value) { 
      RecurseXML($value, $parent . "." . $key); 
     } 
    } 
} 

RecurseXML($result); 
+0

ошибка в if ($ xml is leaf) { – sale2211

+0

M.Page: Я получаю сообщение об ошибке «if ($ xml is leaf) { « – sale2211

+0

Да, вот почему я написал: это« псевдокод ». Это означает, что вы должны заменить 'is leaf' фактическим тестом, указывающим, является ли текущий узел листом. Я не знаю, что вы используете для анализа вашего XML (SimpleXML, DOM XML, ...), поэтому я написал его вот так. –

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