crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Как проверить корректность XML средствами QT
rukudias
  опции профиля:
сообщение 26.3.2009, 15:44
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 26.3.2009
Пользователь №: 641

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




Репутация:   0  


Как отвалидировать XML средствами QT?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 26.3.2009, 15:56
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


Цитата(rukudias @ 26.3.2009, 15:44) *
отвалидировать

что значит?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 26.3.2009, 16:28
Сообщение #3


Старейший участник
****

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

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




Репутация:   9  


Если правильно понял вопрос, то
Раскрывающийся текст
    //запрашиваем имя файла у пользователя
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open XML file"),
                                                    QDir::currentPath(),
                                                    tr("XML file (*.xml)"));
    //если он не выбрал файл, то возвращаем false
    if (fileName.isEmpty())
        return false;

    //пытаемся открыть файл для чтения
    //если не получится, то выводим сообщение об ошибке и возвращаем false
    QFile file(fileName);
    if (!file.open(QFile::ReadOnly | QFile::Text)) {
        QMessageBox::warning(this, tr("Opening file"),
                             tr("Cannot read file %1:\n%2.")
                             .arg(fileName)
                             .arg(file.errorString()));
        return false;
    }

    QString errorStr;
    int errorLine;
    int errorColumn;
        QDomDocument document;

    //парсим файл
    //Если не удается распарисить файл отчетов, возвращаем false
    if (!document.setContent(file, true, &errorStr, &errorLine,
                             &errorColumn)) {
        QMessageBox::information(window(), tr("Parser error"),
                                 tr("Parse error at line %1, column %2:\n%3")
                                 .arg(errorLine)
                                 .arg(errorColumn)
                                 .arg(errorStr));
        return false;
    }

    return true;


Сообщение отредактировал Kagami - 26.3.2009, 16:30
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 26.3.2009, 16:57
Сообщение #4


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


Kagami,
осмелюсь предположить что из всего кода по сути необходимо
только часть несущая непосредственно полезную информацию:
if (!document.setContent(file, true, &errorStr, &errorLine,
                             &errorColumn)) {
        QMessageBox::information(window(), tr("Parser error"),
                                 tr("Parse error at line %1, column %2:\n%3")
                                 .arg(errorLine)
                                 .arg(errorColumn)
                                 .arg(errorStr));
        return false;
    }

+
это как то чевидно что можно вывести в какой колоне и какой строке ошибка.
может имеется ввиду исправить кривой документ???

Сообщение отредактировал kwisp - 26.3.2009, 16:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rukudias
  опции профиля:
сообщение 26.3.2009, 18:22
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 26.3.2009
Пользователь №: 641

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




Репутация:   0  


отвалидировать XML значить проверить по схеме xsl или dtd
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 26.3.2009, 23:30
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


Коротко - пока никак. Юзай libxml2 или что-то другое, раз приспичило.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
evgenii_s
  опции профиля:
сообщение 5.4.2009, 21:08
Сообщение #7


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 5.4.2009
Пользователь №: 661

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




Репутация:   0  


Вот здесь обещают, что скоро сделают валидатор: W3C XML Schema validation with Qt. Вкратце суть: валидатор будет добавлен в модуль QtXmlPatterns. Вообще, автор там пишет, что валидатор практически готов, но присутствует он только в рабочем репозитории qt в git. В snapshot'ах, его, увы, пока не наблюдается.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.4.2009, 21:38
Сообщение #8


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

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

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




Репутация:   94  


evgenii_s, там февральская новость, а сейчас уже в снапшотах (Git) шевеление началось, я правда их ещё не изучал. Но, возможно уже есть.

вот сейчас поискал QXmlSchema, в сырцах Update to Qt 4.6 snapshot 20090404 и не нашел такого слова :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 20.4.2024, 0:16