SOL9 2.0 Class: SchemaItem

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * SchemaItem.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL9
// 2011/02/06
#pragma once

#include <sol/xml/XMLObject.h>
#include <sol/xml/SOMItemType.h>
//#include <sol/xml/SchemaItemCollection.h>


namespace SOL {

class SchemaItem : public XMLObject 
{
private:
    MSXML2::ISchemaItemPtr pItem;

public:
    SchemaItem(MSXML2::ISchemaItemPtr item)
    :pItem(item)
    {
    }

public:
    ~SchemaItem()
    {
        pItem = NULL;
    }

public:
    MSXML2::ISchemaItemPtr getItemPtr()
    {
        if (pItem == NULL) {
            throw Exception("Error: SchemaItem is NULL");
        }
        return pItem;
    }

public:
    _bstr_t getName()
    {
        return getItemPtr()->Getname();
    }

    _bstr_t getNamespaceURI()
    {
        return getItemPtr()->GetnamespaceURI();
    }

    MSXML2::ISchemaPtr getSchema()
    {
        return getItemPtr()->Getschema();
    }

    _bstr_t getId()
    {
        return getItemPtr()->Getid();
    }

    SOMITEMTYPE getItemType()
    {
        return getItemPtr()->GetitemType();
    }

    IVBSAXAttributesPtr getUnhandledAttributes()
    {
        return getItemPtr()->GetunhandledAttributes();
    }

    VARIANT_BOOL writeAnnotation(
        IUnknown * annotationSink)
    {
        return getItemPtr()->writeAnnotation(
            annotationSink);
    }

public:
    void display(const TCHAR* name=NULL)
    {
        if (name ==NULL) {
            name = _T("SchemaItem");
        }
        _tprintf(_T("<%s>\n"), name);

        try {
            SOMItemType type;
            //_tprintf(_T("SchemaItem: Name=%s NamespaceURI=%s Id=%s\n"),
            _tprintf(_T("<%s NamespaceURI=\"%s\" Id=\"%s\" ItemType=\"%s\" />\n"),

            (const TCHAR*)getName(),
            (const TCHAR*)getNamespaceURI(),
            (const TCHAR*)getId(),
            type.getType(getItemType()) );
        } catch (...) {
        }
        _tprintf(_T("</%s>\n"), name);
    }

public:
    void display(MSXML2::ISchemaItemCollectionPtr pCollection, const TCHAR* name)
    {
        try {
            long len = pCollection->Getlength();
            if (len>0) {
                const TCHAR* xname=name;
                if (xname == NULL) {
                    xname = _T("SchemaItemCollection");
                }

                _tprintf(_T("<%s length=\"%d\">\n"), xname, len);
                for (long i = 0; i<len; i++) {
                    try {
                        SchemaItem item = pCollection->Getitem(i);
                        item.display();
                    } catch (...) {
                    }
                }
                _tprintf(_T("</%s>\n"), xname);
            }

        } catch (...) {
        }
    }

};

}


Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.