PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 4
PsiMagistr Отправлено: 04 Октября, 2016 - 15:12:23 • Тема: Работа свойств nodeValue, textContent (PHP DOM) • Форум: XML и его обработка

Ответов: 7
Просмотров: 4593
armancho7777777 пишет:
Не туда смотрите.
armancho7777777 пишет:
child::text()

(Добавление)
armancho7777777 пишет:
PHP:
скопировать код в буфер обмена
  1. $xPath->query('./text()', $message)

(Добавление)
XPath[dot] Функции над множествами узлов
(Добавление)
Еще пример:
PHP:
скопировать код в буфер обмена
  1. foreach($dom->getElementsByTagName('message') as $message)
  2. {
  3.     $texts = [];
  4.  
  5.     foreach($message->childNodes as $childNode) {
  6.         if($childNode->nodeType == XML_TEXT_NODE) {
  7.             $texts[] = $childNode->nodeValue;
  8.         }
  9.     }
  10.  
  11.     var_dump($texts);
  12. }


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


Но, как я уже выше выразил своё мнение, стоит изменить структуру XML.

Я поменял структуру.

Благодарю Вас за такой быстрый и подробный ответ. Правда, спасибо, Вы мне очень помогли!
PsiMagistr Отправлено: 04 Октября, 2016 - 10:16:11 • Тема: Работа свойств nodeValue, textContent (PHP DOM) • Форум: XML и его обработка

Ответов: 7
Просмотров: 4593
armancho7777777 пишет:
Пожалуйста.


А чем тогда отличаются свойства nodeValue от textContent? Я думал, что nodeValue возвращает текст узла, не включая потомков?
PsiMagistr Отправлено: 04 Октября, 2016 - 08:12:35 • Тема: Работа свойств nodeValue, textContent (PHP DOM) • Форум: XML и его обработка

Ответов: 7
Просмотров: 4593
Сердечно благодарю Вас за ответ!
PsiMagistr Отправлено: 03 Октября, 2016 - 16:48:32 • Тема: Работа свойств nodeValue, textContent (PHP DOM) • Форум: XML и его обработка

Ответов: 7
Просмотров: 4593
Ребята, мне очень нужна Ваша помощь.

Имеется следующий фрагмент XML



CODE (htmlphp):
скопировать код в буфер обмена
  1. <message>
  2.             Вы набрали %d из %d максимально возможных баллов. Просто великолепно!
  3.             Вы человек восьмого дня!
  4.             Не может такого быть.  
  5.             <range min="11" max="20">Вы набрали %d из %d максимально возможных баллов. Мало каши ели.</range>
  6.             <range min="21" max="30">Вы набрали %d из %d максимально возможных баллов. Пока Вы нам не подходите. Потренеруйтесь еще.</range>
  7.             <range min="31" max="40">Вы набрали %d из %d максимально возможных баллов. Увы, но пока Вы нам все еще не подходите..</range>
  8.             <range min="41" max="50">Вы набрали %d из %d максимально возможных баллов. Вы человек 8 дня. но пока только наполовину.</range>
  9.             <range min="51" max="60">Вы набрали %d из %d максимально возможных баллов. Ооо! Вы прешли больше половины теста.</range>
  10.             <range min="61" max="70">Вы набрали %d из %d максимально возможных баллов. Еще немножечко. Подтянитесь.</range>
  11.             <range min="71" max="80">Вы набрали %d из %d максимально возможных баллов. Вам осталось совсем чуть-чуть. Капельку.</range>
  12.         </message>        
  13.  


Пишу следующий код на PHP (DOM)



PHP:
скопировать код в буфер обмена
  1.  
  2. $messages = $xml->getElementsByTagName('message');
  3. foreach($messages as $message){
  4.      echo $message->nodeValue;
  5. }
  6.  
  7.  


И получаю на выходе текстовое содержимое и тега <message></message> и всех потомков (тегов <range></range>). Всегда считал, что за это отвечает свойство $xml->textContent

Как мне получить текстовое содержимое только тега <message></message> т.е. только:

Вы набрали %d из %d максимально возможных баллов. Просто великолепно!
Вы человек восьмого дня!
Не может такого быть.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB