Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > PHP DOM nodeValue, textContent


Автор: PsiMagistr 3.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 максимально возможных баллов. Просто великолепно!
Вы человек восьмого дня!
Не может такого быть.  

Спасибо Вам всем больше!

Автор: Angel_666 4.10.2016, 11:12
Код

$ranges = $xml->getElementsByTagName('range');
foreach($ranges as $range){
     echo $range->nodeValue."\r\n";
}


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/PHP-DOM-nodeValue-textContent-id57f20792adbd5f13c545e992#findElement_E7045_57f3648786c4c53034704ab6_0

Автор: PsiMagistr 4.10.2016, 11:57
Спасибо большое за ответ.

А не будет ли это текст со всех дочерних узлов + "\r\n";?

Автор: Angel_666 6.10.2016, 01:47
"\r\n" - это (перенос строки)для красоты вывода примера :)

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/PHP-DOM-nodeValue-textContent-id57f20792adbd5f13c545e992#findElement_E7045_57f582ed86c4c549cf4828ba_0

Автор: Angel_666 6.10.2016, 01:47
"\r\n" - это (перенос строки)для красоты вывода примера :)

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/PHP-DOM-nodeValue-textContent-id57f20792adbd5f13c545e992#findElement_E7045_57f582ed86c4c549cf4828ba_0

Автор: Angel_666 6.10.2016, 01:47
"\r\n" - это (перенос строки)для красоты вывода примера :)

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/PHP-DOM-nodeValue-textContent-id57f20792adbd5f13c545e992#findElement_E7045_57f582ed86c4c549cf4828ba_0

Автор: Angel_666 6.10.2016, 01:47
"\r\n" - это (перенос строки)для красоты вывода примера :)

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/PHP-DOM-nodeValue-textContent-id57f20792adbd5f13c545e992#findElement_E7045_57f582ed86c4c549cf4828ba_0

Автор: Angel_666 6.10.2016, 01:47
"\r\n" - это (перенос строки)для красоты вывода примера :)

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/PHP-DOM-nodeValue-textContent-id57f20792adbd5f13c545e992#findElement_E7045_57f582ed86c4c549cf4828ba_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)