2011-08-10 150 views
0

我在從XML中刪除節點時遇到了一些問題。如何在XML中刪除節點及其子節點

這裏是我的XML架構,

<?xml version="1.0" encoding="ISO-8859-1"?> 
<file> 
    <header Description="Lovely Tool"></header> 

    <ToolPath>C:\MyDocs\MyTool\</ToolPath> 

    <ToolDetails> 
    <Name>XML Tool</Name> 
    <Description>XML parser</Description> 
    <Comments>Good Tool for XML</Comments> 
    </ToolDetails> 
</file> 

我想刪除節點ToolDetails及其childs,我試圖像這樣使用MSXML,但其沒有工作,

這裏是我的代碼

CString childName; 
    MSXML2::IXMLDOMNodePtr childPtr = NULL; 
    MSXML2::IXMLDOMNodePtr delNode = NULL; 
    int i=0; 
    MSXML2::IXMLDOMNodeListPtr pChildNodeListPtr = NULL; 

delNode = m_pRoot->GetchildNodes()->Getitem(index+2);//m_pRoot is the root ptr 
childName=(char*)m_ptrDataBlock->nodeName; 
HRESULT hr = m_pRoot->removeChild(delNode); 

回答

1

Getitem(index+2)將只返回句柄index + 2th項目。

刪除節點還需要通過調用 Getitem(index)->detach()

+0

沒有,它沒有被清除,以分離的項目,我想UR方式:( – Naruto

+0

嘗試尋找這裏:http://read.pudn.com/ downloads108 /源碼/窗/對話框/ 443834 /的3rdParty/XmlNodeWrapper.cpp __ HTM 第h ... –

+0

我試圖像這樣「爲(I = 0;我 GETLENGTH();我++) \t { \t \t childPtr = pChildNodeListPtr-> item [i] .Detach(); \t \t \t childName =(char *)childPtr-> nodeName; \t \t childName =(char *)childPtr-> text; \t \t hr = childPtr-> GetparentNode() - emoveChild(childPtr); \t \t「我得到HR NULL :( – Naruto