Нужна помощь в получении дочерних узлов

я читаю свой XML и перебираю дочерние узлы, когда я перемещаю его на другой сервер, он перестает работать, любые идеи о том, почему он остановится.

вот XML:

<masterxmlholder>   
    <userinfo login="user1">
    <rde-idea:lastlogin code="0">Wed Dec 31 17:00:00 MST 1969</rde-idea:lastlogin>
    </userinfo>

    <userinfo login="user2">
    <rde-idea:lastlogin code="4564568522258">Wed Dec 31 17:00:00 MST 1969</rde-idea:lastlogin>
    </userinfo>
</masterxmlholder>

и вот петля, с которой я пытаюсь добраться до ребенка

foreach ($xml->children() as $user) {
    echo '<tr><td> Name :  </td><td>' . $user['login'] . $user->lastlogin '</td><td>';

}
echo '</table></center>';

Теперь я могу получить атрибут имени для отображения из каждого из дочерних узлов, однако я НЕ могу получить ни один из внутренних узлов дочернего элемента для отображения

все это урезано, чтобы дать вам представление о том, что я пытаюсь сделать ... но в основном это для того, чтобы увидеть, как я пытаюсь получить доступ к дочерним узлам, и, возможно, указать на мою ошибку.

Спасибо за прочтение.


person Canada_Goose    schedule 30.04.2012    source источник


Ответы (1)


Информация lastlogin на самом деле является дочерним элементом узла userinfo, поэтому вам нужно будет снова использовать метод children() для получения информации. Обратите внимание, что в этом примере я удалил пространство имен XML, чтобы можно было инициализировать $xml

$xmlstring = <<<XML
<masterxmlholder>   
    <userinfo login="user1">
    <lastlogin code="0">Wed Dec 31 17:00:00 MST 1969</lastlogin>
    </userinfo>

    <userinfo login="user2">
    <lastlogin code="4564568522258">Wed Dec 31 17:00:00 MST 1969</lastlogin>
    </userinfo>
</masterxmlholder>
XML;

$xml = new SimpleXMLElement($xmlstring);
echo '<center><table>';

foreach ($xml->children() as $user) {
    $name = $user['login'];
    foreach ($user->children() as $child ) {
       $lastlogin = $child;
    }
    echo '<tr><td> Name :  </td><td>' . $name . $lastlogin . '</td></tr>';
}
echo '</table></center>';

Я тестировал код здесь: http://writecodeonline.com/php/

Примечание: я бы не стал использовать тег center, так как это смешивает презентацию с содержанием, что не одобряется. Рассмотрите возможность использования CSS для оформления и размещения таблицы.

person jarrad    schedule 30.04.2012
comment
@jarrad я получаю неопределенную переменную с вашим исправлением, мне нужно объявить переменную в foreach или до этого? - person Canada_Goose; 01.05.2012
comment
У меня сейчас нет доступа к среде php... Я отредактирую свой ответ с проверенным кодом позже, когда у меня будет доступ... - person jarrad; 01.05.2012
comment
здорово !,, спасибо за помощь, приятель! жду ваших правок. - person Canada_Goose; 01.05.2012
comment
@jarrid да, но, как я уже говорил выше, я НЕ могу использовать $user-›lastlogin для возврата каких-либо результатов. Есть ли конкретная настройка PHP, которая блокирует этот дочерний узел? Должен ли я искать настройку в PHP, которая позволит это сделать. он отлично работал в моей среде, но когда я переместил его в другое место, сервер просто вышел из строя. я загружаю это с помощью simpleXML, я не думаю, что это имеет значение. - person Canada_Goose; 01.05.2012
comment
Говоря о borking, последнее редактирование было полностью испорчено. должно быть прямо сейчас... извините за это. - person jarrad; 01.05.2012