Генерация XML-документов из XML-схем в C ++ - PullRequest
9 голосов
/ 26 мая 2010

Есть ли простой способ создать хотя бы шаблон XML-файла с использованием XML-схемы? Мой основной интерес ограничен C ++, но обсуждения других языков программирования также приветствуются. Кстати, я также использую QT framework.

Ответы [ 3 ]

4 голосов
/ 02 июня 2010

Возможно, вам придется написать это самостоятельно. Нет единого способа получить XML-файл из схемы. Если вы можете делать предположения, относящиеся к конкретному домену (например, как заполнять элементы данных, какие элементы выбирать в случае выбора, как часто вставлять элементы, относящиеся к домену), вы получите лучший экземпляр документа.

Если вы работаете с C ++, учтите, что Xerces C ++ позволяет вам загружать схему и обращаться к ее модели (то есть обращаться к ней правильно, а не просто загружать схему как документ XML). Я предлагаю вам скачать его и проверить SCMPrint Sample . Он покажет вам, как пройти схему. Затем вы можете изменить это, чтобы распечатать образец XML-файла.

1 голос
/ 01 июня 2010

Отметьте это ... Как генерировать образцы XML-документов из их DTD или XSD? .. Он также принял ответ и много других предложений ..

0 голосов
/ 05 июня 2010

В Qt 4.5 поддержка XML была расширена реализацией XSLT, которая позволяет вам легко конвертировать документы из одного диалекта XML в другой или генерировать исходный код из описания XML

Проверка схемы XML W3C с помощью Qt

Пример:

    #include <QtXmlPatterns/QXmlSchema>
    #include <QtXmlPatterns/QXmlSchemaValidator>

    QXmlSchema schema;
    schema.load( QUrl("file:///home/jordenysp/example.xsd") );

    if ( schema.isValid() ) {
        QXmlSchemaValidator validator( schema );
        if ( validator.validate( QUrl("file:///home/jordenysp/result.xml") ) ) {
            qDebug() < < "Is valid";
        } else {
            qDebug() << "Is invalid";
        }
    } else {
        qDebug() << "Is invalid";
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...