c# - 如何从 XDocument 获取 XML 节点

标签 c# .net linq linq-to-xml

如何使用 LINQ 从 XDocument 获取 XML 元素?

假设我有一个名为 XMLDoc 的 XDocument,如下所示:

<Contacts>
       <Node>
           <ID>123</ID>
           <Name>ABC</Name>
       </Node>
       <Node>
           <ID>124</ID>
           <Name>DEF</Name>
       </Node>
</Contacts>

XElement Contacts = from xml2 in XMLDoc.Elements("Contacts").Elements("Node")
                    where xml2.Element("ID").Value == variable
                    select xml2;

但我收到错误“对象引用未设置......”

如何使用 LINQ 从 XML 文件中获取特定节点? 我想更新该节点中的一些值?

这怎么可能????

提前致谢.........

最佳答案

测试.xml:

<?xml version="1.0" encoding="utf-8"?>
<Contacts>
  <Node>
    <ID>123</ID>
    <Name>ABC</Name>
  </Node>
  <Node>
    <ID>124</ID>
    <Name>DEF</Name>
  </Node>
</Contacts>

选择单个节点:

XDocument XMLDoc = XDocument.Load("test.xml");
string id = "123"; // id to be selected

XElement Contact = (from xml2 in XMLDoc.Descendants("Node")
                    where xml2.Element("ID").Value == id
                    select xml2).FirstOrDefault();

Console.WriteLine(Contact.ToString());

删除单个节点:

XDocument XMLDoc = XDocument.Load("test.xml");
string id = "123";

var Contact = (from xml2 in XMLDoc.Descendants("Node")
               where xml2.Element("ID").Value == id
               select xml2).FirstOrDefault();

Contact.Remove();
XMLDoc.Save("test.xml");

添加新节点:

XDocument XMLDoc = XDocument.Load("test.xml");

XElement newNode = new XElement("Node",
    new XElement("ID", "500"),
    new XElement("Name", "Whatever")
);

XMLDoc.Element("Contacts").Add(newNode);
XMLDoc.Save("test.xml");

关于c# - 如何从 XDocument 获取 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/752271/

相关文章:

c# - 在自定义对象集合上使用 LINQ 时,IEquatable<T>、IEqualityComparer<T> 和覆盖 .Equals() 之间的区别?

c# - 根据订单中的值(value)过滤列表?

c# - 为什么在这个例子中并行版本比顺序版本慢?

c# - 使用动态设置不受控制的(第三方)密封类型的不同属性

c# - 在 C# 中返回匿名类型

c# - .NET 事件特殊方法(添加/删除/提升/其他)

c# - 使用Linq合并一个List中某个对象的方法返回的所有List

c# - WaitForExit 实际上是在等待外部程序完成吗?

c# - 是否可以使用 SDK4 通过 Bot 从 MS Teams 获取用户电子邮件?

c# - Java 和 C# 之间的桥梁