不提取的xml

时间:2011-03-26 09:11:06

标签: php xml foreach simplexml

我使用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数据中有什么要求我以不同的方式处理这个吗?

4 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

你迭代太多了。你基本上可以访问你的元素:

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

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

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

答案 2 :(得分:0)

试试这个

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

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

答案 3 :(得分:0)

感谢您的建议。

Maerlyn:文件中有这样的说法,我只是把它留下来,只包括结构。

Maria&amp; 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新手,生命太短了......

/的Mattias