c# - 如何使用 C# 从 XML 文件中删除节点

标签 c# xml

<分区>

Possible Duplicate:
How to remove an XmlNode from XmlNodeList

您好,我如何从 XML 文件中删除一组节点。? 这是一个代码片段。

string path = @"C:\Documents and Settings\e454935\Desktop\NUnitSettings.xml";
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();
xmldoc.Load(fs);
fs.Close();
xmldoc.DocumentElement.RemoveChild(xmldoc.DocumentElement.ChildNodes[1]);
FileStream WRITER = new FileStream(path, FileMode.Truncate, FileAccess.Write, FileShare.ReadWrite);
xmldoc.Save(WRITER);
WRITER.Close(); 

我尝试了下面的代码来简单地删除一个节点并得到 “你调用的对象是空的。”在

xmldoc.DocumentElement.RemoveChild(xmldoc.DocumentElement.ChildNodes[1]);

这是一个示例 XML 文件,

<?xml version="1.0"?>
<Xml1>
  <Settings>
    <Setting name="DisplayFormat" value="Full" />
    <Setting name="File1" value="a" />
    <Setting name="File1" value="b" />
    <Setting name="File1" value="c" />
    <Setting name="File1" value="d" />
  </Settings>
</Xml1>

实际上,我想从此文件中删除值为“a、b、c、d”的四个 File1 节点,然后我想添加一个节点 ,

<Setting name="File1" value="e" />

我该怎么做?

最佳答案

您可以使用 Linq to XML这样做:

XDocument doc = XDocument.Load("input.xml");
var q = from node in doc.Descendants("Setting")
        let attr = node.Attribute("name")
        where attr != null && attr.Value == "File1"
        select node;
q.ToList().ForEach(x => x.Remove());
doc.Save("output.xml");

关于c# - 如何使用 C# 从 XML 文件中删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/919645/

相关文章:

c# - 类型安全地将类名传递给方法

java - 这段 XML 代码有什么问题?

python - 如何使用scrapy解析xml

xml - 如何编写 Wcf 服务来接受 xml 数据?

c# - ListBox SelectedItem 不工作

返回 LINQ 时的 c# 异步

xml - 字符串 IO 到 element.etree

java - Jdom2 共享点 XML 字段

c# - 通过 Enterprise Guide 执行 SAS 和从 .Net 执行 IOM 之间的区别

c# - 如何在 MVC 模型中从 SQL Server 数据库一次检索一条记录