Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перебор узлов в XML, Однотипные данные, получить значения 
:(
    Опции темы
liliputochka
Дата 27.1.2010, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 16.3.2006
Где: Волгоград

Репутация: нет
Всего: нет



День добрый!
Условия:
1. С помощью DomDocument формирую дерево XML-файла
2. Считываю данные и вывожу на экран

Задача:
XML-файл сформирован след. образом:
Код

...
<MemberMessage>
  <MemberMessageExchange>
   <Item>
     <ItemID>350288728676</ItemID> 
     <Title>NEW TRIMERSION VR FIRST PERSON SHOOTER 3001AD HEADSET</Title> 
   </Item>
   <Question>
     <MessageType>AskSellerQuestion</MessageType> 
     <QuestionType>Payment</QuestionType> 
     <DisplayToPublic>false</DisplayToPublic> 
     <SenderID>legendq8</SenderID> 
     <SenderEmail>[email protected]</SenderEmail> 
     <RecipientID>saferseller</RecipientID> 
     <Subject>legendq8 has sent a question about :payment for item #350288728676, ending on 14-Dec-09 16:47:09 GMT - NEW TRIMERSION VR FIRST PERSON SHOOTER 3001AD HEADSET</Subject> 
     <Body>Hi How r u ? i hope u r fine it work with windows 7 ? its work with full hd moniters ? how many days it will take to get to me in nottingham in england :) im sure i will buy it but i want to make sure that it work with me sorry for asking many question :)</Body> 
     <MessageID>711602432</MessageID> 
   </Question>
   <MessageStatus>Unanswered</MessageStatus> 
   <CreationDate>2009-12-11T17:27:45.000Z</CreationDate> 
   <LastModifiedDate>2009-12-11T17:27:45.000Z</LastModifiedDate> 
  </MemberMessageExchange>
...
</MemberMessage>

Это один узел, а таких у меня в файле много! Надо чтобы считывались все узлы последовательно. Сделала следующее:
Код

$responseDoc = new DomDocument();
$responseDoc->loadXML($stringXml);
for($i =0; $i<10; $i++){
    $memberMessage = $responseDoc->getElementsByTagName('MemberMessageExchange');
        $itemID = $memberMessage->item(0)->getElementsByTagName('ItemID');
        echo $itemID->item(0)->nodeValue;
        $memberMessage->removeChild($itemID);
}


Выдает ошибку на последнюю строчку: "Call to undefined method DOMNodeList::removeChild()". Я понимаю что метод removeChild() объявлен в классе DOMNode. Я не понимаю что мне сделать, чтобы организовать перебор узлов!?
Я уже пробовала так
Код

for($i =0; $i<10; $i++){
     $itemID = $memberMessage->item($i)->getElementsByTagName('ItemID');
     echo $itemID->item($i)->nodeValue;
}

Не работает!
По сути мне не надо возможности создания своего XML файла методами DomDocument, надо только считывать узлы!
PM MAIL   Вверх
liliputochka
Дата 27.1.2010, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 16.3.2006
Где: Волгоград

Репутация: нет
Всего: нет



Ок! Я нашла как реализовать перебор всех узлов. У меня появляется ошибка 
Цитата

Notice: Trying to get property of non-object in Z:\home\eBayAPI\www\GetMemberMessages_class.php on line 164

Код данной строки следующий
Код

$senderEmail = $mM->getElementsByTagName("SenderEmail");
$valueSenderEmail = $senderEmail->item(0)->nodeValue;

Вопрос: почему браузер проходит 4 итерации без проблем, а на 5-й выдает выше указанную ошибку? В чем ошибка?
Заметка: дальнейшая работа по выводу данных в браузер работает корректно. Все данные верны.

Добавлено через 6 минут и 55 секунд
Появилась еще следующее сообщение об ошибке
Цитата

Notice: Trying to get property of non-object in Z:\home\eBayAPI\www\GetMemberMessages_class.php on line 155

Код
Код

$itemID = $mM->getElementsByTagName( "ItemID" );
$valueitemID = $itemID->item(0)->nodeValue;

Работает так же как и в предыдущей ошибке.
PM MAIL   Вверх
liliputochka
Дата 29.1.2010, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 16.3.2006
Где: Волгоград

Репутация: нет
Всего: нет



Цитата(liliputochka @  27.1.2010,  18:32 Найти цитируемый пост)
Код данной строки следующий

код PHP
1:
2:

$senderEmail = $mM->getElementsByTagName("SenderEmail");
$valueSenderEmail = $senderEmail->item(0)->nodeValue;





Вопрос: почему браузер проходит 4 итерации без проблем, а на 5-й выдает выше указанную ошибку? В чем ошибка?
Заметка: дальнейшая работа по выводу данных в браузер работает корректно. Все данные верны.

Ответ на вопрос очень прост:
В данном случае данные такого типа не поступают!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0641 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.