crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Qt XML
quarz
  опции профиля:
сообщение 9.1.2010, 22:05
Сообщение #1


Студент
*

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

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




Репутация:   0  


Делаю разбор xml с помощью SimpleReader + DefaultHandler.
Все гут, но не могу сделать одну вещь - распознать теги такого вида: <tag />
DefaultHandler распознает его как открывающий. Может есть способ получить полную строку тега, чтобы регуляркой "<.*/>" распознать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.1.2010, 22:32
Сообщение #2


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

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

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




Репутация:   94  


Цитата(quarz @ 10.1.2010, 1:05) *
DefaultHandler распознает его как открывающий.
Неверно, генерируются оба события "открывающийся тэг" и "закрывающийся тэг".
bool QXmlContentHandler::startElement ( const QString & namespaceURI, const QString & localName, const QString & qName, const QXmlAttributes & atts ) [pure virtual]
Цитата
В случае пустых тегов (например, <x/>) сразу за startElement() следует вызов endElement().
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
quarz
  опции профиля:
сообщение 9.1.2010, 23:19
Сообщение #3


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 9.1.2010, 22:32) *
Цитата(quarz @ 10.1.2010, 1:05) *
DefaultHandler распознает его как открывающий.
Неверно, генерируются оба события "открывающийся тэг" и "закрывающийся тэг".
bool QXmlContentHandler::startElement ( const QString & namespaceURI, const QString & localName, const QString & qName, const QXmlAttributes & atts ) [pure virtual]
Цитата
В случае пустых тегов (например, <x/>) сразу за startElement() следует вызов endElement().



Спасибо! Вполне логичное замечание =)
У меня есть как теги <x></x>, так и <x/>. По вызову endElement() невозможно понять, какой это тег - обычный закрывающий </x> или пустой...
В DefaultHandler не нашел ничего для этого. Я с xml в Qt только начал разбираться, может чтото пропустил?

Все, разобрался! Пустой тег можно отличить по отсутствию данных внутри этого тега :) Спасибо, Юрий!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.1.2010, 23:56
Сообщение #4


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

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

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




Репутация:   94  


Цитата(quarz @ 10.1.2010, 2:19) *
Пустой тег можно отличить по отсутствию данных внутри этого тега
именно, посмотри пример saxbookmarks, как там учёт открывшихся/закрывшихся тэгов сделан. Довольно простая идея.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 16.4.2024, 8:50