【问题标题】:xml that won't extract不会提取的xml
【发布时间】:2011-03-26 09:11:06
【问题描述】:

我使用 simplexml_load_file 将以下 xml 内容放入变量中

<suggestions> 
    <items> 

        <item stop_id="00018210" stop_id_with_hash_key="00018210!-1579576589" shortcut=".lvc" stop_type="Stop" rt90_x="6401305" rt90_y="1285996"> 
        <friendly_name><![CDATA[Landvetter centrum, HÄRRYDA (Hållplats)]]></friendly_name> 
        <stop_name><![CDATA[Landvetter centrum]]></stop_name> 
        <county><![CDATA[HÄRRYDA]]></county> 
        </item> 

    </items> 
</suggestions> 

我尝试通过使用 php 执行以下操作来提取内容

foreach ($xml->suggestions as $suggestion) { 
    foreach ($suggestion->items as $item) { 
        foreach ($item->friendly_name as $name) { 
            echo $name; 
        } 
    } 
} 

但我什么也得不到。我也尝试将它通过标准解析器,但最终得到一个空结果。 上面的 xml 数据中是否有任何需要我以不同方式处理的内容?

【问题讨论】:

    标签: php xml foreach simplexml


    【解决方案1】:

    您的文件缺少 xml 标头,请将其添加到开头:

    <?xml version="1.0" encoding="utf-8"?>
    

    【讨论】:

      【解决方案2】:

      试试这个

      foreach ($xml->items as $item) { foreach($item 作为 $item2) { 回声 $item2->friendly_name; } }

      建议是标记开始/结束(根元素)。

      【讨论】:

        【解决方案3】:

        你的迭代太多了。您基本上可以通过以下方式访问您的元素:

        print $xml->items[0]->item->friendly_name;
        

        您不需要遍历根元素。只有一个,它将包含在主$xml(无节点名称)中。在您的情况下,您需要循环的唯一元素是&lt;items&gt;。然后您可以使用 ->friendly_name 作为直接属性访问&lt;item&gt;

        foreach ($xml->items as $items) {
            print $items->item->friendly_name;
        }
        

        【讨论】:

        • 第一个是的,第二个缺少一个项目
        • @Dagon:你是对的。第二个例子我忽略了[0]
        【解决方案4】:

        感谢您的建议。

        Maerlyn:文件有,我只是把它省略了,只包括结构。

        Maria & Daniq,我不知道我是否理解正确,但这就是我所做的,你的方法都没有产生任何结果:

        $xml = simplexml_load_file("http://www.vasttrafik.se/External_Services/TravelPlanner.asmx/GetStopsSuggestions?identifier=0&searchString=landvetter&count=10");
        
            foreach ($xml->items as $item) {
                foreach($item as $item2) {
                  echo $item2->friendly_name;
                }
            } 
        

        所以这并没有让我得到任何东西,这也没有:

        $xml = simplexml_load_file("http://www.vasttrafik.se/External_Services/TravelPlanner.asmx/GetStopsSuggestions?identifier=0&searchString=landvetter&count=10");
        
        foreach ($xml->items as $items) {
            echo $items->item->friendly_name;
        }
        

        如果你们中的任何人有时间,请随时自行加载这个 xml 文档,看看是否能从中得到什么……非常感谢。我是xml新手,人生太短了……

        /马蒂亚斯

        【讨论】:

          猜你喜欢
          • 2012-01-22
          • 1970-01-01
          • 2018-04-10
          • 2015-01-02
          • 2012-01-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多