如何从PHP中的XML文件中获取值?

问题描述:

这是我的XML代码如何从PHP中的XML文件中获取值?

<Hotelobjekt xmlns="http://www.dcs-caesar.de/hoteldaten" CRSSperre="false" Buchungssperre="false"> 
     <Hotelcode>AYTBLK0038</Hotelcode> 
     <Hotelname>LIMAK ATLANTIS DE LUXE HOTEL &amp;amp; RESORT</Hotelname>  
    <Saisondefinition Saisonkuerzel="W16" DatumVon="2016-11-01" DatumBis="2017-04-06"> 
     <Saisonzeit Nummer="1"> 
      <Zeitraum DatumVon="2016-11-01" DatumBis="2016-11-18"/> 
      <Zeitraum DatumVon="2016-12-25" DatumBis="2016-12-31"/> 
     </Saisonzeit> 
     <Saisonzeit Nummer="2"> 
      <Zeitraum DatumVon="2017-01-01" DatumBis="2017-03-06"/> 
      <Zeitraum DatumVon="2016-11-19" DatumBis="2016-12-24"/> 
     </Saisonzeit> 
     <Saisonzeit Nummer="3"> 
      <Zeitraum DatumVon="2017-03-07" DatumBis="2017-04-06"/> 
     </Saisonzeit> 
     </Saisondefinition> 
    </Hotelobjekt> 



$items = simplexml_load_file($url); 
print_r($items); // it's okey works 

阵列输出;

SimpleXMLElement对象([@属性] =>数组([CRSSperre] => 假[Buchungssperre] =>假)[Hotelcode] => AYTBLK0038 [Hotelname] => LIMAK ATLANTIS DE豪华酒店& RESORT (Saisonzeerzel)=> W16 [DatumVon] => 2016-11-01 [DatumBis] => 2017-04-06)[Saisonzeit] => SimpleXMLElement Object([@attributes] => Array > Array([0] => SimpleXMLElement Object([@attributes] => Array([0] => ) ([DatumVon] => 2016-11-01 [Dat ([@attributes] =>数组([DatumVis] => 2016-12-25 [DatumBis] => 2016-12-31) ))[] [] [] => SimpleXMLElement Object([@attributes] => Array([Nummer] => 2)[Zeitraum] => Array([0] => SimpleXMLElement Object([@attributes] => Array ([DatumVon] => 2017-01-01 [DatumBis] => 2017-03-06))[1] => SimpleXMLElement Object([@attributes] => Array([DatumVon] => 2016-11-19 [Datatis] => 2016-12-24)))[2] => SimpleXMLElement Object([@attributes] => Array([Nummer] => 3)[Zeitraum] => SimpleXMLElement Object([@attributes] => Array( [DatumVon] => 2017-03-07 [DatumBis] => 2017-04-06))))))

echo $items->Hotelcode."<br>"; 
echo $items->Hotelname."<br>"; 

此代码的工作,但我想要得到的其他代码

​​

只要做到循环使用子项

$xml = simplexml_load_string($string); 
foreach($xml->Saisondefinition->Saisonzeit as $Saisonzeit) { 
    echo $Saisonzeit['Nummer'] . "<br>\n"; 
    foreach($Saisonzeit->Zeitraum as $Zeitraum) { 
     echo $Zeitraum['DatumVon'] . ' - ' . $Zeitraum['DatumBis'] . "<br>\n"; 
    } 
} 

Demo on eval.in

+0

由于其作品 – lafcanbazi

您可以直接引用这些通过使用像...

echo $items->Saisondefinition[0]->Saisonzeit[0]->Zeitraum['DatumVon']."<br>"; 

的最主要的是,元件使用->elementName访问,而属性被作为阵列的元素进行访问,所以->elementName['attributeName']

+0

由于这个代码工作 – lafcanbazi