2010-12-06 10 views
0

C#2.0のXmlファイルからいくつかのXmlElementsを削除しようとしました。 XmlNode.Remove()メソッドで正常に削除できます。しかしXmlElementにはRemoveメソッドがありません。XmlElementを削除するには? (XmlNodeとXmlElement)

私はこれを見つけ出しました。

要素はノードの一種です。実際、.NET FrameworkでXmlNodeとXmlElementのメンバーを見ると、それらは非常に似ていますが、XmlElementの方が多くなっています。 XmlNodeを継承し、さらにカスタマイズされます。これは、要素がより特殊化されているためです。ノードはより一般的です。文書はノードであり、処理命令はノードであり、以下同様である。要素は異なります。要素のXmlNodeTypeプロパティを見ると、見つかった多くの種類のノードの1つである要素であることがわかります。

エレメントがノードのタイプである場合、なぜremoveコマンドを使用できないのですか?それではどうですか?

XmlDocument doc_AlarmSettingUp = new XmlDocument(); 
doc_AlarmSettingUp.Load(xmlFile_AlarmSettingUp); 
XmlNode rootDest = doc_AlarmSettingUp.SelectSingleNode("/Equipment/AlarmSettingUp/EnabledALIDs"); 
foreach (XmlElement el_AlarmSettingUp in doc_AlarmSettingUp.SelectNodes("/Equipment/AlarmSettingUp/EnabledALIDs/ALID")) 
{ 
    XmlElement outEl; 
    if (lookup.TryGetValue(el_AlarmSettingUp.GetAttribute("alid"), out outEl)) 
    { 
     // exists; element now in "other" 
     // Console.WriteLine("exists"); 
    } 
    else 
    { 
     // doesn't exist 
     Console.WriteLine("doesn't exist"); 
     // Then How can I remove element with an element method? Thanks. 
    } 
} 

答えて

2

次のコードは、任意のXmlElementで動作するはずです:

if (outEl.ParentNode != null) outEl.ParentNode.RemoveChild(outEl); 
+0

これは私に必要なものです。ありがとう。 –

1

あなたは上記のコードをどうするかをしようとしていますか?私が見る限り、それは質問には関係しません。

XmlElement(XmlNode)でRemoveを呼び出すと、何が問題になりますか?

+0

私は 'XmlElement'を削除する方法を見つけようとしています。お返事をありがとうございます。 –

1

私が見る限り、XmlNodeにはRemove()の方法もありません。それにはRemoveChild(XmlNode)メソッドがあり、XmlElementもあります。子要素を削除するには、親要素のRemoveChildを使用する必要があります。

+0

私の間違い申し訳ありません。私は文全体を 'XmlNode.RemoveChile(XmlNode)'と書くべきです。 –

関連する問題