본문 바로가기

Programming/MSXML

MSXML - InsertBefore

[ 맨 앞에 끼워 넣기 예제 ]
 

MSXML2::IXMLDOMElementPtr rootElem           = NULL;; 
MSXML2::IXMLDOMNodePtr        pXMLtmpNode  = NULL;
MSXML2::IXMLDOMElementPtr    pXMLName      = NULL;
MSXML2::IXMLDOMElementPtr    pXMLAge         = NULL;
_variant_t vtObject; 

rootElem = pXMLDom->GetdocumentElement();

pXMLtmpNode = pXMLDom->createNode(NODE_ELEMENT, "Record","");

pXMLName  = pXMLDom->createElement(_T("Name"));
pXMLName ->Puttext(_T("김바보"));  
pXMLName  = pXMLtmpNode->appendChild( pXMLName   );

MSXML2::IXMLDOMElementPtr pXMLLocation = pXMLDom->createElement(_T("Age"));
pXMLAge->Puttext(_T("30"));   
pXMLAge = pXMLtmpNode->appendChild( pXMLAge );
vtObject.vt = VT_DISPATCH;
vtObject.ppdispVal = NULL;
vtObject = (IDispatch *)rootElem->firstChild;

rootElem->insertBefore(pXMLtmpNode, vtObject);

<?xml version="1.0"?>
<Records>
    <Record>
        <Name>김바보</Name>
        <Age>30</Age>
    </Record>

    <Record>
        <Name>김다희</Name>
        <Age>27</Age>
    </Record> 
    <Record>
        <Name>이민정</Name>
        <Age>31</Age>
    </Record> 
</Records>  

-----------------------------------------------------------------------------------------------
[ 1번째 Record 뒤에 넣기 ]

MSXML2::IXMLDOMNodeListPtr pXMLNodeList = NULL;

pXMLNodeList = rootElem->childNodes;

vtObject = (IDispatch *)pXMLNodeList->item[1];

rootElem->insertBefore(pXMLtmpNode, vtObject);

<?xml version="1.0"?>
<Records>
    <Record>
        <Name>김다희</Name>
        <Age>27</Age>
    </Record> 
    <Record>
        <Name>김바보</Name>
        <Age>30</Age>
    </Record> 
    <Record>
        <Name>이민정</Name>
        <Age>31</Age>
    </Record> 
</Records>