2011-08-16 11 views
1

そのコードは機能しません。パス4ノードを削除しないでください。どうすればいいですか?私を助けてください。ありがとうございました。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

そのコードは機能しません。それはパス4ノードを削除しませんどのように私はそれを私を助けてくださいすることができます。ありがとうございました。 – 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(上記)はnullになり、後続のメソッド/プロパティ呼び出しで例外が発生します。 – jdavies

+0

xpathExceptionが処理されず、 'Component \ WindowEntries \ WindowEntry'に無効なトークンがあるとボタンをクリックするとランタイムエラーです。 – maduranga

関連する問題