Qt xmlWriter/xmlReader

Я хочу написать и прочитать XML-файл, используя Qt. Есть ли простой пример кода, который генерирует XML-файл динамически?

Я нашел несколько классов Qt xml, но кто-нибудь знает, к чему они привыкли, и есть ли простой пример, который использует эти классы?

QtXml Module (http://doc.qt.nokia.com/latest/qtxml.html)
QXmlStreamReader (http://doc.qt.nokia.com/4.7/qxmlstreamreader.html)
QXmlStreamWriter (http://doc.qt.nokia.com/4.7/qxmlstreamreader.html)

Я написал управляемый код C++, но моя проблема в том, что этот код (с использованием /clr обязательно) не поддерживает IntelliSense в Visual Studio 2010. Теперь я пытаюсь найти альтернативу. Если кто-то знает что-то, что имеет почти те же функции, только с использованием неуправляемого кода, было бы идеально!

Более того, я нашел это, но на самом деле не знаю, как его использовать: QString to XML в QT

2 ответа

Решение

Спасибо за Ваш ответ!

Я нашел эти ссылки для генерации и чтения XML-файлов с использованием QT от Nokia:

Написание файлов XML: http://developer.nokia.com/community/wiki/Generate_XML_programatically_in_Qt

Чтение файлов XML: http://www.developer.nokia.com/Community/Wiki/Using_QXmlStreamReader_to_parse_XML_in_Qt

Это классы QT, используемые при записи и чтении файлов XML:

http://doc.qt.nokia.com/4.7/qxmlstreamwriter.html

http://doc.qt.nokia.com/4.7/qxmlstreamreader.html

Если вы намереваетесь анализировать небольшие XML-файлы, самый простой способ - использовать класс QDomDocument, см. пример ниже, взятый из "Программирование на C++ с использованием Qt4, второе издание".

QFile file(filename);
QString errorStr;
int errorLine;
int errorColumn;
QDomDocument doc;
if (!doc.setContent(&file, false, &errorStr, &errorLine,
                    &errorColumn)) {
    std::cerr << "Error: Parse error at line " << errorLine << ", "
              << "column " << errorColumn << ": "
              << qPrintable(errorStr) << std::endl;
    return false;
}
QDomElement root = doc.documentElement();
if (root.tagName() != "bookindex") {
    std::cerr << "Error: Not a bookindex file" << std::endl;
    return false;
}

Однако весь xml хранится в памяти, поэтому будьте осторожны с большими xml-файлами.

Другие вопросы по тегам