Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从简单xml中获取元素值_Php_Xml - Fatal编程技术网

Php 如何从简单xml中获取元素值

Php 如何从简单xml中获取元素值,php,xml,Php,Xml,我有以下xml文档: <?xml version="1.0"?> <root> <offers count="3009"> <offer> <offerId>25</offerId> <offer_type>for sale</offer_type> <offer_status>available</offer_status> <b

我有以下xml文档:

<?xml version="1.0"?>  
<root> 
<offers count="3009">
<offer>
    <offerId>25</offerId>
    <offer_type>for sale</offer_type>
    <offer_status>available</offer_status>
     <building_floors></building_floors>
    <title>title</title> 
<photos count="4">
<photo zIndex="1">1.jpg</photo>
<photo zIndex="2">2.jpg</photo>
<photo zIndex="3">3.jpg</photo>
<photo zIndex="4">4.jpg</photo>
     </photos>
  </offer>
</offers>
</root>

25
供出售
可获得的
标题
1.jpg
2.jpg
3.jpg
4.jpg
我使用以下php代码从xml获取结果:

$xml = simplexml_load_file("offers.xml") 
       or die("Error: Cannot create object");
foreach($xml->children() as $offers){
    foreach($offers->children() as $offer => $data){
    echo $data->offerId;echo "<br />";//and so on for each element
          foreach ($xml->offers->offer->photos->photo as $aaa){
         $photos=$aaa; echo "<br />";
         //echo $xml;
         $photo = explode("<br /> ", $photos);
            foreach($photo as $value) echo $value; echo '<br />';//echo $value
        }
    }
}
$xml=simplexml\u加载文件(“offers.xml”)
或死亡(“错误:无法创建对象”);
foreach($xml->children()作为$offers){
foreach($offers->children()作为$offer=>$data){
每个元素的echo$data->offerId;echo“
”;//依此类推 foreach($xml->offers->offer->photos->photoas$aaa){ $photos=$aaa;echo“
”; //echo$xml; $photo=爆炸(“
,$photos”); foreach($photo as$value)echo$value;echo'
';//echo$value } } }
当我尝试循环photo元素时,我会得到所有照片,但只有第一张照片。
我的问题是我做错了什么,为什么我没有为每个报价获取照片?

问题在于检索照片元素的方式。您从根元素开始,因此它总是给您相同的节点。 您应该像这样使用$data:

foreach ($data->photos->photo as $aaa){
清理一点您的代码您应该使用它来显示照片元素:

$xml = simplexml_load_file("offers.xml") or die("Error: Cannot create object");
foreach($xml->children() as $offers){
    foreach($offers->children() as $offer){
        echo "Offer id : " . $offer->offerId . "<br>";
        foreach ($offer->photos->photo as $photo){
            $val = (string) $photo;
            echo $val . "<br>";
        }
    }
}
$xml=simplexml\u加载文件(“offers.xml”)或die(“错误:无法创建对象”);
foreach($xml->children()作为$offers){
foreach($offers->children()作为$offer){
echo“Offer id:”.$Offer->offerId.
”; foreach($offer->photos->photo as$photo){ $val=(字符串)$photo; 回声$val.“
”; } } }