XML, который не будет извлекать - PullRequest
0 голосов
/ 26 марта 2011

Я использую 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 голосов
/ 29 марта 2011

Спасибо за ваши предложения.

Maerlyn: В документе есть это, я просто исключил его, включая только структуру.

Мария и Даник, я не знаю, правильно ли я вас понял, но это то, что я сделали ни один из ваших подходов не дал никаких результатов:

$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, жизнь слишком коротка ...

/ Маттиас

0 голосов
/ 26 марта 2011

Вы итерируете слишком много. Вы можете в основном получить доступ к своему элементу как:

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

Вам не нужно перебирать корневой элемент. Будет только один, и он будет содержаться в основном $xml (имя узла без). Единственный элемент, который вам нужно перебрать в вашем случае - это <items>. Затем вы можете получить доступ к <item> с -> friendly_name в качестве прямых свойств:

foreach ($xml->items as $items) {
    print $items->item->friendly_name;
}
0 голосов
/ 26 марта 2011

Попробуйте это

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

В предложении отмечается начало / конец (корневой элемент).

0 голосов
/ 26 марта 2011

В вашем файле отсутствует заголовок xml, добавьте его в начало:

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