crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QDomElement::text() - нужно подобие
Litkevich Yuriy
  опции профиля:
сообщение 5.9.2008, 20:02
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Есть такой XML'ьник:
<?xml version="1.0"?>
<bookindex>
    <h1>Hello
        <b>Qt</b>
        <b>XML is brain's cancer</b>
    </h1>
</bookindex>


Функция QDomElement::text() для элемента h1 вернет строку (без учета форматирования):
Hello Qt XML is brain's cancer

как можно выдернуть только: Hello т.е. без содержимого вложеных тэгов?

Вроде подходящей функции больше нет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 5.9.2008, 20:17
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Как вариант полученный QString прочитать до первого "<" ? :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Novak
  опции профиля:
сообщение 5.9.2008, 20:20
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 319
Регистрация: 15.3.2008
Из: Замкадыш
Пользователь №: 121

Спасибо сказали: 28 раз(а)




Репутация:   6  


obj.firstChild().toText() не поможет?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 5.9.2008, 20:22
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Удалил, потому как фигню сказал... :blush:

Сообщение отредактировал ViGOur - 5.9.2008, 20:26
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.9.2008, 23:16
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


пытаюсь понять что такое УЗЕЛ (NODE). Описание в стандарте расплавило мозг (из-за бесконечного цикла):
Цитата
The Node interface is the primary datatype for the entire Document Object Model. It represents a single node in the document tree.

или на русском:
Цитата
Интерфейс Node - первичный тип данных для всей Объектной Модели Документов. Он представляет единственный узел в дереве документа.


может кто-нибудь объяснить, что такое узел?

Элемент - содержит все, что находится между отрывающимся тэгом и соответствующим ему закрывающимся тэгом включая эти тэги.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Novak
  опции профиля:
сообщение 5.9.2008, 23:26
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 319
Регистрация: 15.3.2008
Из: Замкадыш
Пользователь №: 121

Спасибо сказали: 28 раз(а)




Репутация:   6  


Цитата(Litkevich Yuriy @ 6.9.2008, 0:16) *
может кто-нибудь объяснить, что такое узел?

По сути это единичкая структура.. Т.е. текст - это тоже узел.
Все элементы - узлы, но обратное неверно.
Потому по firstChild должен как раз вылезать текст.
Нужно различать текстовые узлы, элементы, узлы cdata
вот можно схемку посмотреть, может понятней станет...

Сообщение отредактировал Novak - 5.9.2008, 23:42
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.9.2008, 2:48
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Вот пример:
<?xml version="1.0"?>
<!-- This start comment -->
<root>
<!-- This root comment -->
This is root
<tag1>
    This is tag 1
    <h1> This is header <b1>Qt1</b1> <i1>XML1 is a brain's cancer</i1></h1>
    <!-- This first comment -->
</tag1>
<tag2>
    This is tag 2
    <!-- This thecond comment -->    
    <p1>This is paragraph <b2>Qt2</b2> <i2>XML2 is a brain's cancer</i2> End of paragraph</p1>
</tag2>
</root>

Рекурсивный анализ начиная с root, т.е.
QDomDocument doc;
QDomElement root = doc.documentElement();
Вот к какому результату привел:

Type: ElementNode
Name: root
Value:
Data:
Text: This is root This is tag 1 This is header Qt1XML1 is a brain's cancer This is tag 2 This is paragraph Qt2XML2 is a brain's cancer End of paragraph
-----------------------------------------------------
Type: CommentNode
Name: #comment
Value: This root comment
Data:
Text:
-----------------------------------------------------
Type: TextNode
Name: #text
Value: This is root
Data: This is root
Text:
-----------------------------------------------------
Type: ElementNode
Name: tag1
Value:
Data:
Text: This is tag 1 This is header Qt1XML1 is a brain's cancer
-----------------------------------------------------
Type: TextNode
Name: #text
Value: This is tag 1
Data: This is tag 1
Text:
-----------------------------------------------------
Type: ElementNode
Name: h1
Value:
Data:
Text: This is header Qt1XML1 is a brain's cancer
-----------------------------------------------------
Type: TextNode
Name: #text
Value: This is header
Data: This is header
Text:
-----------------------------------------------------
Type: ElementNode
Name: b1
Value:
Data:
Text: Qt1
-----------------------------------------------------
Type: TextNode
Name: #text
Value: Qt1
Data: Qt1
Text:
-----------------------------------------------------
Type: ElementNode
Name: i1
Value:
Data:
Text: XML1 is a brain's cancer
-----------------------------------------------------
Type: TextNode
Name: #text
Value: XML1 is a brain's cancer
Data: XML1 is a brain's cancer
Text:
-----------------------------------------------------
Type: CommentNode
Name: #comment
Value: This first comment
Data:
Text:
-----------------------------------------------------
Type: ElementNode
Name: tag2
Value:
Data:
Text: This is tag 2 This is paragraph Qt2XML2 is a brain's cancer End of paragraph
-----------------------------------------------------
Type: TextNode
Name: #text
Value: This is tag 2
Data: This is tag 2
Text:
-----------------------------------------------------
Type: CommentNode
Name: #comment
Value: This thecond comment
Data:
Text:
-----------------------------------------------------
Type: ElementNode
Name: p1
Value:
Data:
Text: This is paragraph Qt2XML2 is a brain's cancer End of paragraph
-----------------------------------------------------
Type: TextNode
Name: #text
Value: This is paragraph
Data: This is paragraph
Text:
-----------------------------------------------------
Type: ElementNode
Name: b2
Value:
Data:
Text: Qt2
-----------------------------------------------------
Type: TextNode
Name: #text
Value: Qt2
Data: Qt2
Text:
-----------------------------------------------------
Type: ElementNode
Name: i2
Value:
Data:
Text: XML2 is a brain's cancer
-----------------------------------------------------
Type: TextNode
Name: #text
Value: XML2 is a brain's cancer
Data: XML2 is a brain's cancer
Text:
-----------------------------------------------------
Type: TextNode
Name: #text
Value: End of paragraph
Data: End of paragraph
Text:
-----------------------------------------------------

Причина редактирования: отчётик об эксперементе
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Novak
  опции профиля:
сообщение 6.9.2008, 13:01
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 319
Регистрация: 15.3.2008
Из: Замкадыш
Пользователь №: 121

Спасибо сказали: 28 раз(а)




Репутация:   6  


Так что в итоге всё понятно и проблема решена?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 6.9.2008, 21:15
Сообщение #9


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

Спасибо сказали: 21 раз(а)




Репутация:   6  


а фигли тут решать?
минут 10 если содержание стабильно...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.9.2008, 22:13
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Novak @ 6.9.2008, 17:01) *
Так что в итоге всё понятно и проблема решена?
Понятно, но проблема не решена, т.е. прийдется всегда проверять тип тэга и в зависимости от типа применять либо Value, либо Text
однообразия нет блин.

Цитата(trdm @ 7.9.2008, 1:15) *
а фигли тут решать?
минут 10 если содержание стабильно...
не понял
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 17:15