如果xmldocument中存在该属性,则删除该属性

本文关键字:属性 删除 xmldocument 存在 如果 | 更新日期: 2023-09-27 18:01:31

如果属性存在于文档中,如何从XmlDocument中删除属性?请帮助。我正在使用RemoveAttribute,但我如何检查它是否存在。

root.RemoveAttribute(字段名);

谢谢. .

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

我试图删除属性名为"DataFieldName"。

如果xmldocument中存在该属性,则删除该属性

不确定你到底想做什么,所以这里有两个例子。

删除属性:

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>

您可以使用XmlNamedNodeMap。RemoveNamedItem方法(name)来完成它。它可以用于属性。如果没有找到匹配的节点,它将返回从XmlNamedNodeMap中删除的XmlNode或空引用(在Visual Basic中为空)。

    [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);
     }
   }