2011-07-10 8 views
1

私はusers.xmlのmsxmlパーサーを使用して子要素を作成するにはどうすればよいですか?

<?xml version="1.0"?> 
<Data> 
    <Users> 
     <User name="xyz" email="[email protected]"> 
        <Tasks/> 
     </User> 
    </Users> 
</Data> 

は私が

IXMLDOMDocumentPtr pXMLDom; 

// code to load the xml dox 

IXMLDOMElementPtr pXMLDocElement = NULL; 
IXMLDOMNodeListPtr pXMLUsers = NULL; 

//gets <Data> 
pXMLDocElement = pXMLDom->GetdocumentElement(); 

//gets <Users> 
pXMLUsers = pXMLDocElement->childNodes; 

今、私は子要素ユーザーユーザーを作成するにはどうすればよい次のコードを使用してユーザー要素への参照を持っている必要があり要素。

createElement()pXMLUsersに送信しようとしましたが、IXMLDOMNodeListPtr has no member appendChildと表示されています。

新しい要素の作成方法はわかりません。

ありがとうございました。

答えて

1

[OK]を、私は、あなたの提案のためのTERACytE

IXMLDOMDocumentPtr pXMLDom; 

// code to load the xml dox 

//Creating <User> 
MSXML2::IXMLDOMElementPtr pUser = pXMLDom->createNode(NODE_ELEMENT, "User", ""); 

//Creating <User name=""> 
MSXML2::IXMLDOMAttributePtr pName = pXMLDom->createAttribute("name"); 
pName->value = name; 

//Creating <User email=""> 
MSXML2::IXMLDOMAttributePtr pEmail = pXMLDom->createAttribute("email"); 
pEmail->value = email; 

//Adding name attrib to <User> 
pUser->setAttributeNode(pName); 

//Adding email attrib to <User> 
pUser->setAttributeNode(pEmail); 

//Creating <Tasks> 
MSXML2::IXMLDOMElementPtr pTasks = pXMLDom->createNode(NODE_ELEMENT, "Tasks", ""); 

//Creating <Task> 
MSXML2::IXMLDOMElementPtr pTask = pXMLDom->createNode(NODE_ELEMENT, "Task", ""); 

//Creating <Task name=""> 
MSXML2::IXMLDOMAttributePtr pTName = pXMLDom->createAttribute("name"); 
pTName->value = task; 

//Creating <User status=""> 
MSXML2::IXMLDOMAttributePtr pStatus = pXMLDom->createAttribute("status"); 
pStatus->value = status; 

//Adding name attrib to <User> 
pTask->setAttributeNode(pTName); 

//Adding status attrib to <User> 
pTask->setAttributeNode(pStatus); 

//Adding <Task> to <Tasks> 
pTasks->appendChild(pTask); 

//Adding <Tasks> to <User> 
pUser->appendChild(pTasks); 

//Selecting <Users> 
MSXML2::IXMLDOMNodePtr pUsers = pXMLDom->selectSingleNode("/Data/Users"); 

//Adding <User> to <Users> 
pUsers->appendChild(pUser); 
1

IXMLDOMNodeListPtrを使用して子を追加することはできません。これは既存の子を反復するためのものです。

IXMLDOMElementPtrを直接使用してpXMLDocElement->appendChild()を呼び出して、ドキュメント内に子要素を追加することができます。

+0

感謝のおかげで解決策を見つけました。 IXMLDOMElementPtrへの参照を「」要素 – Searock

+0

にする方法を提案できますか?XPathを使用して、その要素(XPath用のサンプル文字列)を検索します。http://msdn.microsoft.com/en-us/library/ms256086.aspx、COM API info(IXMLDOMSelection)here:http://msdn.microsoft.com/en-us/library/ms759171(v=VS.85).aspx –

関連する問題