PHP DOM nodeValue, textContent

 
0
 
PHP
ava
PsiMagistr | 03.10.2016, 10:23
Ребята, мне очень нужна Ваша помощь. Я так же прошу прощения у уважаемых модераторов, что продублировал эту тему в разделе XML

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


        <message>
            Вы набрали %d из %d максимально возможных баллов. Просто великолепно!
            Вы человек восьмого дня!
            Не может такого быть.  
            <range min="11" max="20">Вы набрали %d из %d максимально возможных баллов. Мало каши ели.</range>
            <range min="21" max="30">Вы набрали %d из %d максимально возможных баллов. Пока Вы нам не подходите. Потренеруйтесь еще.</range>
            <range min="31" max="40">Вы набрали %d из %d максимально возможных баллов. Увы, но пока Вы нам все еще не подходите..</range>
            <range min="41" max="50">Вы набрали %d из %d максимально возможных баллов. Вы человек 8 дня. но пока только наполовину.</range>
            <range min="51" max="60">Вы набрали %d из %d максимально возможных баллов. Ооо! Вы прешли больше половины теста.</range>
            <range min="61" max="70">Вы набрали %d из %d максимально возможных баллов. Еще немножечко. Подтянитесь.</range>
            <range min="71" max="80">Вы набрали %d из %d максимально возможных баллов. Вам осталось совсем чуть-чуть. Капельку.</range>
        </message>        


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


$messages = $xml->getElementsByTagName('message');
foreach($messages as $message){
     echo $message->nodeValue;
}


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

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

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

Спасибо Вам всем больше!
Ответы (3)
ava
Angel_666 | 04.10.2016, 11:12 #

$ranges = $xml->getElementsByTagName('range');
foreach($ranges as $range){
     echo $range->nodeValue."\r\n";
}
ava
PsiMagistr | 04.10.2016, 11:57 #
Спасибо большое за ответ.

А не будет ли это текст со всех дочерних узлов + "\r\n";?
ava
Angel_666 | 06.10.2016, 01:47 #
"\r\n" - это (перенос строки)для красоты вывода примера :)
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить