2011-07-08 23 views
5

属性が文書に存在する場合、XmlDocumentからその属性を削除する方法はありますか?助けてください。 RemoveAttributeを使用していますが、存在するかどうかを確認する方法はありますか。xmldocumentから属性が存在する場合は、属性を削除します。

root.RemoveAttribute(fieldName);私は "DataFieldName" という名前の属性を削除しようとしています

おかげ..

<?xml version="1.0" standalone="yes" ?> 
<Record1> 
    <Attribute1 Name="DataFieldName" Value="Pages" /> 
</Record1> 

+0

あなたのXMLを見せてもらえますか?あなたのコードを表示するためのケア? –

答えて

10

あなたがしようとしていることを正確にはわからないので、ここに2つの例があります。

属性を削除:

var doc = new System.Xml.XmlDocument(); 
doc.Load("somefile.xml"); 
var root = doc.FirstChild; 

foreach (System.Xml.XmlNode child in root.ChildNodes) 
{ 
    if (child.Attributes["Name"] != null) 
     child.Attributes.Remove(child.Attributes["Name"]); 
} 

を空の文字列に属性を設定する:

var doc = new System.Xml.XmlDocument(); 
doc.Load("somefile.xml"); 
var root = doc.FirstChild; 

foreach (System.Xml.XmlNode child in root.ChildNodes) 
{ 
    if (child.Attributes["Name"] != null) 
     child.Attributes["Name"].Value = ""; 
} 

編集:あなたは、元の要求に手の込んだ場合、私は自分のコードを変更しようとすることができます。 XML文書は1つのルートノードしか持つことができず、あなたのレコードはレコード1であるように見えます。つまり、ファイル全体に1つのレコードしか含まれないということですか?それとも、それを行うには

<?xml version="1.0" standalone="yes" ?> 
<Records> 
    <Record> 
     <Attribute Name="DataFieldName" Value="Pages" /> 
    </Record> 
    <Record> 
     <Attribute Name="DataFieldName" Value="Pages" /> 
    </Record> 
</Records> 
+0

コードありがとうございます。これは属性に対して機能します。とにかく "Attribute1"ノードが存在する場合、それを削除できますか? – nav100

+0

私はAttribute1という子ノードが1つしかありません。私はそれが存在する場合削除しようとしています。 – nav100

+0

属性ノードが1つしかなく親ノードの下にある場合は、XmlDocumentを作成してファイルを読み込んだ後、doc.RemoveChild(doc.SelectSingleNode( "Attribute1"));を呼び出します。 –

1

youcan使用XmlNamedNodeMap.RemoveNamedItem方法(名)のようなものを持っている意味しました。 Attributes.Itに使用できます。一致するノードが見つからない場合は、このXmlNamedNodeMapから削除されたXmlNodeまたはnull参照(Visual BasicではNothing)を返します。

[C#] 
    using System; 
    using System.IO; 
    using System.Xml; 

    public class Sample 
    { 
    public static void Main() 
    { 
    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml("<book genre='novel' publicationdate='1997'> " + 
       " <title>Pride And Prejudice</title>" + 
       "</book>");  

    XmlAttributeCollection attrColl = doc.DocumentElement.Attributes; 

    // Remove the publicationdate attribute. 
    attrColl.RemoveNamedItem("publicationdate"); 

    Console.WriteLine("Display the modified XML..."); 
    Console.WriteLine(doc.OuterXml); 

    } 
    } 
関連する問題