如何从XDocument获取XML节点
如何从XDocument使用LINQ获取XML元素?
假设我有一个XDocument命名的XMLDoc,如下所示:
<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文件中获取特定节点? 我想更新该节点中的一些值?
怎么可能?
提前致谢………
回应OP发布的其他问题 。
的test.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>
select一个节点:
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");
这里还有一个很好的parsingXML的教程。 希望它有帮助。
.Elements操作返回一个XElements的列表 – 但是你真正想要的是一个SINGLE元素。 加这个:
XElement Contacts = (from xml2 in XMLDoc.Elements("Contacts").Elements("Node") where xml2.Element("ID").Value == variable select xml2).FirstOrDefault();
通过这种方式,您可以告诉LINQ从您select的XElements列表中给出第一个(或NULL,如果没有的话)。
渣子