如果文档中存在属性,如何从XmlDocument中删除属性?请帮忙。我正在使用RemoveAttribute但是如何检查它是否存在。
root.RemoveAttribute(fieldName的);
谢谢..
<?xml version="1.0" standalone="yes" ?>
<Record1>
<Attribute1 Name="DataFieldName" Value="Pages" />
</Record1>
我正在尝试删除名为“DataFieldName”的属性。
答案 0 :(得分:12)
不确定你想要做什么,所以这里有两个例子。
删除属性:
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>
答案 1 :(得分:1)
您可以使用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);
}
}