如果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"。
不确定你到底想做什么,所以这里有两个例子。
删除属性:
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);
}
}