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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Навигация по xml в php>5.0 
:(
    Опции темы
ANDeath
Дата 12.4.2006, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Значит, есть к примеру такой отрывок xml-файла:
Код

<CHARACTER class='2'>
  <CON>asd</CON>
  <COL>6</COL>
  <CON>asd2</CON>
  <COL>15</COL>
  <CON>asd3</CON>
  <COL>45</COL>
</CHARACTER>

Задача: ПОСЛЕДОВАТЕЛЬНО считать текстовое содержимое КАЖДОГО из дочерних элементов тега "CHARACTER".
Условия:
1. использование foreach - очевидно не решает проблему, ибо позволяет получить доступ только к одному из элементов (либо CON, либо COL)
2. приводить xml-документ к виду более подходящему для решения задачи нельзя (вернее я не хочу, возни много smile )
3. на щутку юзаемую в ранних версиях php:
Код
$character[$i]->textContent;

матюкается, типа нефиг использовать методы array для объекта NodeList.

Такая вот печаль smile помогите кто чем может smile заранее премного благодарен...
PM MAIL   Вверх
IvanB
Дата 13.4.2006, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вчера писал....smile
Похожее...smile
Код

function getArray($xmlDocument)
{
    $arr=array();
        $arr_dop=$xmlDocument->childNodes;
    foreach ($arr_dop as $key=>$val)
    {
        if ($val->nodeName!="#text") // Не знаю, но почему-то иногда выдаёт
        {
                  $arr[$val->nodeName]=$val->textContent;                                
        }
    }
        return $arr;
}


XMLDocument имеет тип DOMDocument (или DOMNode или DOMElement).
Вместо неё передаёшь свой XML файл....
Должно работать.
Так вроде.smile

Цитата(ANDeath @ 12.4.2006, 20:06 Найти цитируемый пост)
2. приводить xml-документ к виду более подходящему для решения задачи нельзя (вернее я не хочу, возни много smile )

Зря....Быстро это пишется....smile


Это сообщение отредактировал(а) IvanB - 13.4.2006, 07:16
--------------------
Закон отладки: Каждая последняя ошибка является предпоследней.
PM MAIL ICQ   Вверх
ANDeath
Дата 13.4.2006, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



мда...а я про childNodes забыл совсем, обычно использую getElementsByTagName smile
начал было уже считывать отдельно элементы CON и COL в массивы и по-очередно выводить...словом благодарю.
Думал может есть встроенные функции итерации по набору узлов, типа nextChild и prevChild (по-аналогу с firstChild), чтобы не громоздить код алгоритмами, как выше приведенный.
PM MAIL   Вверх
WhiteSpirit
Дата 19.4.2006, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



foreach для перебора юзать не рекомендуется.
Лучше для этих целей использовать
Код

for($i=0; $i<$node->length; $i++) {

}


А проверку на #text можно осуществлять через nodeType, по моему для #text это значение =1   

Это сообщение отредактировал(а) WhiteSpirit - 19.4.2006, 08:54
--------------------
To beer or no to beer
PM MAIL   Вверх
IvanB
Дата 19.4.2006, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(WhiteSpirit @  19.4.2006,  08:53 Найти цитируемый пост)
foreach для перебора юзать не рекомендуется.

Интересно было бы узнать причину.


Цитата(WhiteSpirit @  19.4.2006,  08:53 Найти цитируемый пост)
А проверку на #text можно осуществлять через nodeType, по моему для #text это значение =1   

Вопрос в том, можно ли сделать так, чтобы вообще никакого условия применять не надо было. smile
Это так. Дополнительно. smile
 
--------------------
Закон отладки: Каждая последняя ошибка является предпоследней.
PM MAIL ICQ   Вверх
WhiteSpirit
Дата 19.4.2006, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(IvanB @  19.4.2006,  17:17 Найти цитируемый пост)
foreach для перебора юзать не рекомендуется.

Интересно было бы узнать причину.


Это лучше к книжке Котерова обратиться, помоему там про это есть.



Цитата(IvanB @  19.4.2006,  17:17 Найти цитируемый пост)
А проверку на #text можно осуществлять через nodeType, по моему для #text это значение =1   

Вопрос в том, можно ли сделать так, чтобы вообще никакого условия применять не надо было. smile
Это так. Дополнительно. smile

А вот по поводу этого наверное не подскажу, если толко в цикле перепрыгивать через одно значение, но так и на ошибку нарваться недолго
 
--------------------
To beer or no to beer
PM MAIL   Вверх
ANDeath
Дата 21.4.2006, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



товарищи, подскажите за одно, как в php5 создавать, удалять или изменять элементы со сложной структурой.
к примеру, штука с удалением из php<5.0 опять не срабатывает:
Код

    $parent=$del_node->parentNode;
    $parent->removeChild($del_node);

...хотя и не возвращает false.
или ссылки дайте на примеры  smile  
PM MAIL   Вверх
IvanB
Дата 22.4.2006, 06:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здесь глянуть можешь....Вроде....smile
http://www.w3schools.com/dom/dom_examples.asp 
--------------------
Закон отладки: Каждая последняя ошибка является предпоследней.
PM MAIL ICQ   Вверх
ANDeath
Дата 26.4.2006, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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


 




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


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

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