Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / dom вывод из xml ошибка / 2 сообщений из 2, страница 1 из 1
21.05.2013, 19:44
    #38267158
ans2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dom вывод из xml ошибка
Файл xml

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<?xml version="1.0" encoding="utf-8"?>
<childdrens>
<childd id="1" name="klassa">
<item id="1">Sasha</item>
<item id="2">kosta</item>
<item id="3">Petya</item>
</childd>
<childd id="2" name="klassb">
<item id="4">Vasya</item>
<item id="5">Kolya</item>
<item id="6">Alesha</item>
</childd>
<childd id="3" name="klassv">
<item id="4">1n</item>
<item id="5">2n</item>
<item id="6">3n</item>
</childd>
</childdrens>

Вывожу в php таким образом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<?php 
  $dom = new domDocument();
  $dom->load("auto.xml"); // Загружаем XML-документ из файла в объект DOM
  $root = $dom->documentElement; // Получаем корневой элемент
  $klassi = $root->childNodes; // Получаем дочерние элементы у корневого элемента
  
  $klass = $klassi->item('2');
  echo $idklassa = $klass->getAttribute("id");
  echo $imyaklassa = $klass->getAttribute("name");
  
  $deti = $klass->childNodes;
    
  echo $idrebenka = $deti->item(1)->getAttribute("id");
  echo $imyarebenka = $deti->item(1)->nodeValue;

  var_dump($deti);
?>

Т.е. здесь задаю номер элемента который хочу вытащить $klass = $klassi->item('2');
Если ставлю 1, то выдает нормально, если ставлю 2 или 0, то пишет ошибку

Call to undefined method DOMText::getAttribute() in

Подставляю туда знание 5, тоже выводит, хотя 5 элементов у меня даже нету в XML
...
Рейтинг: 0 / 0
22.05.2013, 07:33
    #38267563
mhx
mhx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dom вывод из xml ошибка
Советую не юзать childNodes для получения списка узлов-потомков. В вашем случае код
Код: php
1.
$klassi = $root->childNodes;


вернет 7 элементов вместо ожидаемых трех
Код: sql
1.
2.
3.
4.
5.
6.
7.
#text
childd
#text
childd
#text
childd
#text


Заюзайте лучше все тот же XPATH в виде (имхо)
Код: php
1.
$klassi = $xpath->query ('*', $root);


Этот код вернет нужные 3 узла
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / dom вывод из xml ошибка / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]