2011-08-16 60 views
1

該代碼不起作用。它不會刪除path4節點,我該怎麼做?請幫幫我。謝謝。我想從xml用戶選擇路徑的文件中移除xml節點?

<WindowEntries> 
<WindowEntry> 
    <Name>tbwUnitOverview</Name> 
    <View>TRN_UNIT</View> 
    <LU>TrnUnit</LU> 
    <DefaultWindowText> windowtext</DefaultWindowText> 
    <Flags>0</Flags> 
</WindowEntry> 
<WindowEntry> 
    <Name>tbwBrandOverView</Name> 
    <View>TRN_BRAND</View> 
    <LU>TrnBrand</LU> 
    <DefaultWindowText /> 
    <Flags>0</Flags> 
</WindowEntry> 
<WindowEntry> 
    <Name>tbwProductCategory</Name> 
    <View>TRN_PROD_CATEGORY</View> 
    <LU>TrnProdCategory</LU> 
    <DefaultWindowText /> 
    <Flags>0</Flags> 
</WindowEntry> 

  XmlTextReader reader = new XmlTextReader("component.xml"); 
     XmlDocument doc = new XmlDocument(); 
      doc.Load(reader); 
      reader.Close(); 
      XmlNode currNode; 
      string path4 = treeView1.SelectedNode.FullPath.ToString(); 

       currNode = doc.SelectSingleNode(path4); 
       currNode.RemoveAll(); 



      doc.Save("component.xml"); 
+0

該代碼不起作用。它不會刪除path4節點,我該怎麼做,請幫助我。謝謝。 – maduranga

+0

可能的重複http://stackoverflow.com/questions/7074621/how-do-i-replace-a-xml-node/7074676#7074676 – Zenwalker

+0

你第一次理解你寫的代碼嗎?你有調試過嗎? – Zenwalker

回答

0

的問題是要刪除所有子節點,你是從文檔選擇節點的屬性,而不是實際的節點itsself。

參見:XmlNode.RemoveAll Method

如果你想刪除實際的節點,您將需要訪問父節點(XmlNode.ParentNode Property),然後調用removeChild之法(XmlNode.RemoveChild Method)傳遞您要刪除像這樣的節點:

string path4 = treeView1.SelectedNode.FullPath.ToString(); 
XmlNode nodeToRemove = doc.SelectSingleNode(path4); 
XmlNode parentNode = nodeToRemove.ParentNode; 
parentNode.RemoveChild(nodeToRemove); 

希望這會有所幫助。

+0

jdavies它也會產生相同的錯誤。 – maduranga

+0

您能否向我提供有關例外的詳細信息?異常可能是由path4變量中保存的XPath值引起的。如果此路徑不正確,則nodeToRemove(上面)將爲空,並且會在隨後的方法/屬性調用中導致異常。 – jdavies

+0

這是一個運行時錯誤,當我點擊按鈕它說xpathException是unhandle和'Component \ WindowEntries \ WindowEntry'有一個無效的標記。 – maduranga