SOL9 Sample: XMLDOMSchemaCollection

SOL9 2.0 Samples

1 Screenshot


2 Source code

/*
 * XMLDOMSchemaCollection.cpp 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL9
// 2011/01/27

// Sample program to read and parse an xml file by using SAXXMReader class.

#include <sol/COMInitializer.h>
#include <sol/Locale.h>

//#include <sol/xml/SAXXMLReader.h>
//#include <sol/xml/XMLDOMSchemaCollection.h>
#include <sol/xml/XMLDOMDocument.h>


void _tmain(int argc, TCHAR** argv)
{
    if (argc !=3) {
        _tprintf(_T("Usage:\n%s mail.xsd mail.xml\n"), argv[0]);
        _tprintf(_T("Causing Error:\n%s sample.xsd bad.xml\n"), argv[0]);

        return;
    }

    if (GetFileAttributes(argv[1]) == 0xffffffff) {
        _tprintf(_T("File not found %s\n"), argv[1]);
        return;
    }
        
    if (GetFileAttributes(argv[2]) == 0xffffffff) {
        _tprintf(_T("File not found %s\n"), argv[1]);
        return;
    }

    COMInitializer comInitializer;
    Locale locale;

    try {
        const TCHAR* xsdFile = argv[1];        //sample.xsd
        const TCHAR* xmlFile = argv[2];        //sample.xml
        
        XMLDOMDocument xmlDocument;
        
        XMLDOMDocument xsdDocument;
        xsdDocument.putAsync(VARIANT_FALSE);
        xsdDocument.open(xsdFile);
        _tprintf(_T("1 OK. Loaded %s to XMLDOMDocument\n"), xsdFile);


        SOL::XMLDOMSchemaCollection schemaCollection;
        _tprintf(_T("2 OK. XMLDOMSchemaCollection\n"));

        //The first parameter of the following XMLDOMSchemaCollection::add method is merely
        //a fixed sample targetNamespace "http://www.w3.org/2001/XMLSchema".
        //If a targetNamespace in xsdFile is different from the above namespace value,
        //then a mismatching error in targetNamespaces will occur. 
        schemaCollection.add("http://www.w3.org/2001/XMLSchema", _variant_t(xsdFile));
        _tprintf(_T("3 OK. Added xsdFie(%s) to XMLDOMSchemaCollection \n"), xsdFile);

        schemaCollection.putValidateOnLoad(VARIANT_TRUE);

        HRESULT hr = schemaCollection.validate();
        _tprintf(_T("4 OK. Validated XMLDOMSchemaCollection of xsdFile=%s\n"), xsdFile);
        schemaCollection.display();

        xmlDocument.putValidateOnParse(VARIANT_TRUE);
        xmlDocument.putAsync(VARIANT_FALSE);

        xmlDocument.putRefschemas(_variant_t((IUnknown*)schemaCollection ) );
        _tprintf(_T("5 OK. Put RefSchema to XMLDOMDocument\n"));

        xmlDocument.open(xmlFile);
        _tprintf(_T("6 OK. Opend xmlFile=%s\n"), xmlFile);

        HRESULT h = xmlDocument.validate();
        _tprintf(_T("7 OK. Validated xmlDocument\n"));

    } catch (HRESULT hr) {
        _tprintf(_T("Exception 0x%x\n"), hr);
    } catch (Exception& ex) {
        ex.printf();
    } catch (_com_error& ex) {
        ComError error(ex);
        error.printf();
    } catch (XMLDOMParseError& ex) {
        ex.display();
    }

}

Last modified: 25 Feb 2011

Copyright (c) 2011 Antillia.com ALL RIGHTS RESERVED.