SOL9 2.0 Class: XMLDOMNode

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

Source code

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


// SOL9
// 2011/01/27
#pragma once
#include <sol/xml/XMLObject.h>

namespace SOL {

class XMLDOMNode : public XMLObject {
private:
    MSXML2::IXMLDOMNodePtr pNode;

public:
    XMLDOMNode(MSXML2::IXMLDOMNodePtr aNode=NULL)
        :pNode(aNode)
    {
        //printf("XMLDOMNode::XMLDOMNode\n");
    }

public:
    void set(__in MSXML2::IXMLDOMNodePtr aNode)
    {
        this->pNode = aNode;
    }


public:
    MSXML2::IXMLDOMNodePtr getNodePtr()
    {
        if(pNode == NULL) {
            throw Exception("Error: XMLDOMNodePtr is NULL");
        }
        return pNode;
    }

public:
    //2011/02/07
    operator MSXML2::IXMLDOMNode*()
    {
        return (MSXML2::IXMLDOMNode*)pNode;
    }

public:
    //2011/02/07
    operator IUnknown*()
    {
        return (IUnknown*)pNode;
    }

public:
    _bstr_t getNodeName()
    {
        return getNodePtr() -> GetnodeName();
    }

    _variant_t getNodeValue()
    {
        return getNodePtr() -> GetnodeValue();
    }


    void putNodeValue(const _variant_t & value)
    {
        getNodePtr() -> PutnodeValue(value);
    }

    MSXML2::DOMNodeType getNodeType()
    {
        return getNodePtr() -> GetnodeType();
    }


    MSXML2::IXMLDOMNodePtr getParentNode()
    {
        return getNodePtr() -> GetparentNode();
    }

    MSXML2::IXMLDOMNodeListPtr getChildNodes()
    {
        return getNodePtr() -> GetchildNodes();
    }

    MSXML2::IXMLDOMNodePtr getFirstChild()
    {
        return getNodePtr() -> GetfirstChild();
    }

    MSXML2::IXMLDOMNodePtr getLastChild()
    {
        return getNodePtr() -> GetlastChild();
    }

    MSXML2::IXMLDOMNodePtr getPreviousSibling()
    {
        return getNodePtr() -> GetpreviousSibling();
    }

    MSXML2::IXMLDOMNodePtr getNextSibling()
    {
        return getNodePtr() -> GetnextSibling();
    }

    MSXML2::IXMLDOMNamedNodeMapPtr getAttributes()
    {
        return getNodePtr() -> Getattributes();
    }

    MSXML2::IXMLDOMNodePtr insertBefore(struct MSXML2::IXMLDOMNode * newChild, const _variant_t & refChild)
    {
        return getNodePtr() -> insertBefore(newChild, refChild);
    }

    MSXML2::IXMLDOMNodePtr replaceChild(struct MSXML2::IXMLDOMNode * newChild, struct MSXML2::IXMLDOMNode * oldChild)
    {
        return getNodePtr() -> replaceChild(newChild, oldChild);
    }

    MSXML2::IXMLDOMNodePtr removeChild(struct MSXML2::IXMLDOMNode * childNode)
    {
        return getNodePtr() -> removeChild(childNode);
    }

    MSXML2::IXMLDOMNodePtr appendChild(struct MSXML2::IXMLDOMNode * newChild)
    {
        return getNodePtr() -> appendChild( newChild);
    }

    VARIANT_BOOL hasChildNodes()
    {
        return getNodePtr() -> hasChildNodes();
    }

    MSXML2::IXMLDOMDocumentPtr getOwnerDocument()
    {
        return getNodePtr() -> GetownerDocument();
    }
    
    MSXML2::IXMLDOMNodePtr cloneNode(VARIANT_BOOL deep)
    {
        return getNodePtr() -> cloneNode(deep);
    }

    _bstr_t getNodeTypeString()
    {
        return getNodePtr() -> GetnodeTypeString();
    }

    _bstr_t getText()
    {
        return getNodePtr() -> Gettext();
    }

    void putText(_bstr_t text)
    {
        getNodePtr() -> Puttext(text);
    }

    VARIANT_BOOL getSpecified()
    {
        return getNodePtr() -> Getspecified();
    }

    MSXML2::IXMLDOMNodePtr getDefinition()
    {
        return getNodePtr() -> Getdefinition();
    }

    _variant_t getNodeTypedValue()
    {
        return getNodePtr() -> GetnodeTypedValue();
    }

    void putNodeTypedValue( const _variant_t & typedValue)
    {
        return getNodePtr() -> PutnodeTypedValue(typedValue);
    }

    _variant_t getDataType()
    {
        return getNodePtr() -> GetdataType();
    }

    void putDataType(_bstr_t dataTypeName)
    {
        getNodePtr() -> PutdataType(dataTypeName);
    }

    _bstr_t getXML()
    {
        return getNodePtr() -> Getxml();
    }

    _bstr_t transformNode(struct MSXML2::IXMLDOMNode * stylesheet)
    {
        return getNodePtr() -> transformNode(stylesheet);
    }

    MSXML2::IXMLDOMNodeListPtr selectNodes(_bstr_t queryString)
    {
        return getNodePtr() -> selectNodes(queryString);
    }

    MSXML2::IXMLDOMNodePtr selectSingleNode(_bstr_t queryString)
    {
        return getNodePtr() -> selectSingleNode(queryString);
    }

    VARIANT_BOOL getParsed()
    {
        return getNodePtr() -> Getparsed();
    }

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

    _bstr_t getPrefix()
    {
        return getNodePtr() -> Getprefix();
    }

    _bstr_t getBaseName()
    {
        return getNodePtr() -> GetbaseName();
    }

    HRESULT transformNodeToObject(struct MSXML2::IXMLDOMNode * stylesheet, const _variant_t & outputObject)
    {
        return getNodePtr() -> transformNodeToObject(stylesheet, outputObject);
    }

public:
    void dump()
    {
        MSXML2::IXMLDOMNodePtr pNode = getNodePtr();

        if (pNode) {
            _bstr_t name = getNodeName();

            _tprintf(_T("<%s"), (const TCHAR*)name);

            MSXML2::IXMLDOMNamedNodeMapPtr map = pNode->Getattributes();
            if (map) {
                for (int n = 0; n<map->Getlength(); n++) {
                    MSXML2::IXMLDOMNodePtr aNode = map->Getitem(n);
                    _bstr_t name  = aNode->GetnodeName();
                    _bstr_t value = aNode->GetnodeValue();
                    _tprintf(_T(" %s=\"%s\""), (const TCHAR*)name, (const TCHAR*)value);
                }
                //map = NULL;
            }
            _tprintf(_T(">\n"));
        }
    }
};

}

Last modified: 1 Feb 2012

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