2011-07-08 71 views
5

如果文檔中存在屬性,如何從XmlDocument中刪除屬性?請幫忙。我正在使用RemoveAttribute,但如何檢查它是否存在。如果它存在於xmldocument中,則刪除屬性

root.RemoveAttribute(fieldName);

謝謝..

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

我試圖刪除名爲 「DataFieldName」 屬性。

+0

小心顯示您的XML?小心顯示你的代碼? –

回答

10

不確定你想要做什麼,所以這裏有兩個例子。

刪除屬性:

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文檔只能有一個根節點,而你的文件看起來是record1。那麼這是否意味着你的整個文件將只包含一條記錄?還是你的意思有類似

<?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的子節點。我試圖刪除它是否存在。 – nav100

+0

如果您只有一個Attribute1節點,並且它位於父節點下,那麼在創建XmlDocument並將文件加載到其中後,只需調用:doc.RemoveChild(doc.SelectSingleNode(「Attribute1」)); –

1

你可以橫置XmlNamedNodeMap.RemoveNamedItem方法(名)做到這一點。它可以用於Attributes.It將返回從此XmlNamedNodeMap中刪除的XmlNode或空引用(在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); 

    } 
    } 
相關問題