Как писать парсер для XML?, С чего начинать? |
Здравствуйте, гость ( Вход | Регистрация )
Как писать парсер для XML?, С чего начинать? |
QMainWindow |
29.7.2011, 17:41
Сообщение
#1
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Привет!
Вопрос в сабже. В начале сделал, как в примерах показано (DOM BookMarks) - открытие файла; проверка, является ли файл xml'евским с нужной версией. А как дальше делать, чтобы он распознавал тэги? В QtXml столько классов... QDomDocument вроде ясно зачем. А Node, Element и тд - куда они? PS Туториал есть по этому? |
|
|
RazrFalcon |
29.7.2011, 18:22
Сообщение
#2
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
|
|
|
QMainWindow |
29.7.2011, 20:20
Сообщение
#3
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Посмотрел. Но там получается, что в консоль выводятся только тэги на одном уровне. А что делать с теми, что вложены в них? Или делать тоже самое, но для вложенных? А не проще просканировать все подряд? Я же не знаю, сколько уровней в файле.
|
|
|
RazrFalcon |
29.7.2011, 20:51
Сообщение
#4
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Раскрывающийся текст
Как то так. |
|
|
QMainWindow |
29.7.2011, 22:31
Сообщение
#5
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Спасибо, буду разбираться.
|
|
|
QMainWindow |
30.7.2011, 18:50
Сообщение
#6
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
Возникла проблема.
Есть, например, три самых верхних тэга: title, section, section (никаких head, body или других, что могли бы стоять выше). Для просмотра в глубину каждого из них использую вышеуказанную рекурсию. Предположим, вся ветка title просмотрена и наша функция переходит к просмотру потомков у второго тэга. Вопрос: как определить этот момент? |
|
|
RazrFalcon |
30.7.2011, 19:29
Сообщение
#7
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
|
|
|
Iron Bug |
30.7.2011, 20:17
Сообщение
#8
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
Есть, например, три самых верхних тэга: title, section, section (никаких head, body или других, что могли бы стоять выше) на самом деле, это несоответствие стандарту XML. так что многие парсеры будут ругаться. лучше всё же делать единый корень у всего документа. |
|
|
QMainWindow |
30.7.2011, 20:24
Сообщение
#9
|
Участник Группа: Участник Сообщений: 198 Регистрация: 1.8.2010 Пользователь №: 1922 Спасибо сказали: 0 раз(а) Репутация: 0 |
А, я видать не написал. Те 3 тэга - это пример. На самом деле мы не знаем, как конкретно называются все верхние тэги (и их количество), все они записаны в сам xml файл. Может есть какой-нибудь метод для определения самого верхнего родителя ака getTopDomNode()?
Определить этот момент нужно не для меня, а для программы, т.к. в именно этот момент ей нужно очистить два векторных массива. Корень изначально единый, просто в самом доке идут следующие подуровни, которые нужно по-разному обрабатывать (т.е. есть несколько методов). Сообщение отредактировал QMainWindow - 30.7.2011, 20:26 |
|
|
Litkevich Yuriy |
31.7.2011, 9:50
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
примеры смотри
|
|
|
Текстовая версия | Сейчас: 28.11.2024, 2:53 |