【问题标题】:problems geting values from xml从 xml 获取值的问题
【发布时间】:2010-01-20 17:48:58
【问题描述】:

我试图从下面的 xml 提要中获取一些值

    <?xml version="1.0" ?>
<SEARCH>
  <LOCATION>
   <NAME>Terrance</NAME>
   <COUNTRY>USA</COUNTRY>
  </LOCATION>
<FOUND>
    <TOTALOFOUND>
    <TOTAL>3</TOTAL>
    </TOTALOFOUND>
  <PLACE>
      <ADDRESS>IL Road</ADDRESS>
      <NAME>shop1</NAME>
      <POSTCODE>5</POSTCODE>
    <CATIM>
      <SMALL>ILR.jpg</SMALL>
      <MEDIUM>ILR1.jpg</MEDIUM>
      <DESCRIPTION>feeds</DESCRIPTION>
    </CATIM>
    <BUILD>this is the first test xml feed</BUILD>
    <ID>1235</ID>
    <DIST>
     <LAT>25</LAT>
     <LONG>547</LONG>
   </DIST>
  </PLACE>
  <PLACE>
      <ADDRESS>Peter Road</ADDRESS>
      <NAME>textas</NAME>
      <POSTCODE>987</POSTCODE>
    <CATIM>
      <SMALL>test.jpg</SMALL>
      <MEDIUM>test1.jpg</MEDIUM>
      <DESCRIPTION>feeds new</DESCRIPTION>
    </CATIM>
    <BUILD>this is the second test xml feed</BUILD>
    <ID>1235</ID>
    <DIST>
     <LAT>25</LAT>
     <LONG>547</LONG>
   </DIST>
  </PLACE>
   <PLACE>
      <ADDRESS>Thsi is the 3rd st</ADDRESS>
      <NAME>utah</NAME>
      <POSTCODE>9117</POSTCODE>
    <CATIM>
      <SMALL>utah.jpg</SMALL>
      <MEDIUM>utah1.jpg</MEDIUM>
      <DESCRIPTION>feeds new 3</DESCRIPTION>
    </CATIM>
    <BUILD>this is the third test xml feed</BUILD>
    <ID>000000</ID>
    <DIST>
     <LAT>000</LAT>
     <LONG>54000</LONG>
   </DIST>
  </PLACE>
 </FOUND>
</SEARCH>

我已使用以下代码来获取值

<?php
strings = file_get_contents("feed.xml");
$xml=simplexml_load_string($strings);

foreach ($xml as $place)
{
echo "Total : ".$place->TOTALOFOUND->TOTAL."<br />";
echo "address: ".$place->PLACE->ADDRESS."<br />";
echo "Name : ".$place->PLACE->NAME."<br />";
echo "post code: ".$place->PLACE->POSTCODE."<br />";
echo "Small image: ".$place->PLACE->CATIM->SMALL."<br />";
echo "Medium Image: ".$place->PLACE->CATIM->MEDIUM."<br />";
echo "Descripton: ".$place->PLACE->CATIM->DESCRIPTION."<br />";
echo "Office ID: ".$place->PLACE->ID."<br />";
echo "Cord Lat: ".$place->PLACE->DIST->LAT."<br />";
echo "Cord Long: ".$place->PLACE->DIST->LONG."<br />"."<br />";
}
?>

问题是,虽然我在 xml 中有 3 条记录,但它只显示第一个结果。一开始它给出了以下错误。有人能帮帮我吗

Total :
address:
Name :
post code:

Notice: Trying to get property of non-object in C:\wamp\www\site\test.php on line 16
Small image:

Notice: Trying to get property of non-object in C:\wamp\www\site\test.php on line 17
Medium Image:
Descripton:
Office ID:

Notice: Trying to get property of non-object in C:\wamp\www\site\test.php on line 20
Cord Lat:

Notice: Trying to get property of non-object in C:\wamp\www\site\test.php on line 21
Cord Long:

Total : 3
address: IL Road
Name : shop1
post code: 5
Small image: ILR.jpg
Medium Image: ILR1.jpg
Descripton:
Office ID: 1235
Cord Lat: 25
Cord Long: 547

任何帮助将不胜感激

谢谢

【问题讨论】:

    标签: php xml simplexml feed


    【解决方案1】:

    您必须更仔细地查看 XML 的结构,并根据其层次结构以适当的方式访问节点。

    echo "Total : ".$xml->FOUND->TOTALOFOUND->TOTAL."<br />";
    foreach ( $xml->FOUND->PLACE as $place )
    {
      echo "address: ".$place->ADDRESS."<br />";
      echo "Name : ".$place->NAME."<br />";
      echo "post code: ".$place->POSTCODE."<br />";
      echo "Small image: ".$place->CATIM->SMALL."<br />";
      echo "Medium Image: ".$place->CATIM->MEDIUM."<br />";
      echo "Descripton: ".$place->CATIM->DESCRIPTION."<br />";
      echo "Office ID: ".$place->ID."<br />";
      echo "Cord Lat: ".$place->DIST->LAT."<br />";
      echo "Cord Long: ".$place->DIST->LONG."<br />"."<br />";
    }
    

    【讨论】:

    • 不客气。由于您是 StackOverflow 的新手,因此习惯上投票和/或“接受”回答您问题的回复。我邀请您仔细阅读常见问题解答stackoverflow.com/faq
    【解决方案2】:

    这又是一个例子,说明为什么人们总是应该在他们所代表的节点之后命名他们的 PHP 变量。这样,您就不会迷失在树的层次结构中。

    根节点是&lt;SEARCH/&gt;,因此它的PHP var应该是$SEARCH。另外,请注意 simplexml_load_file() 的使用

    $SEARCH = simplexml_load_file('feed.xml');
    
    echo "Total : ".$SEARCH->FOUND->TOTALOFOUND->TOTAL."<br />";
    
    foreach ($SEARCH->FOUND->PLACE as $PLACE)
    {
        echo "address: ".$PLACE->ADDRESS."<br />";
        // etc...
        echo "Cord Lat: ".$PLACE->DIST->LAT."<br />";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多