LINQ to XML
LINQ to XML 提供了大量和 System.Xml 类似的操作手段用于修改 XML 文档。
var doc = new XDocument(); // Add doc.Add(new XElement("people")); // Add Child var people = doc.Root; people.Add(new XElement("person")); var person = doc.Element("people").Element("person"); person.Add( new XElement("id", 1), new XElement("name", "user1"), new XElement("age", 12)); // AddBeforeSelf & AddAfterSelf person.AddBeforeSelf(new XElement("person", new XElement("id", 2), new XElement("name", "user2"), new XElement("age", 12))); person.AddAfterSelf(new XElement("person", new XElement("id", 3), new XElement("name", "user3"), new XElement("age", 12))); // Attribute var e = (from o in doc.Element("people").Elements() where (int)o.Element("id") == 2 select o).Single(); e.SetAttributeValue("tag", 12345); // Update e = doc.Element("people").Elements().Single(p => (int)p.Element("id") == 2); e.Remove(); // Replace e = doc.Element("people").Elements().Single(p => (int)p.Element("id") == 3); e.ReplaceWith( new XElement("person", new XElement("id", 4), new XElement("name", "user4"), new XElement("age", 12)), new XElement("person", new XElement("id", 5), new XElement("name", "user5"), new XElement("age", 12)) ); Console.WriteLine(doc);
------------- 分割线 -----------------
我们还以用 System.Xml.XPath 中的 Extensions 扩展方法类来继续使用 XPath。
using System.Xml.Linq; using System.Xml.XPath; var doc = new XDocument( new XElement("people", new XElement("person", new XElement("id", 1), new XElement("name", "user1"), new XElement("age", 1)), new XElement("person", new XElement("id", 2), new XElement("name", "user2"), new XElement("age", 2), new XAttribute("tag", 2)), new XElement("person", new XElement("id", 3), new XElement("name", "user3"), new XElement("age", 3), new XAttribute("tag", 3)) ) ); // 获取所有 XElement var a = doc.XPathSelectElements("/people/person"); // 获取指定值的 XElement var b = doc.XPathSelectElement("/people/person[id=2]"); // 获取所有包含指定属性的 XElement var c = doc.XPathSelectElements("/people/person[@tag]"); // 获取指定属性值的 XElement var d = doc.XPathSelectElement("/people/person[@tag=2]");
原文地址: http://www.rainsts.net/feed.asp?q=comment&id=570
============ 欢迎各位老板打赏~ ===========
与本文相关的文章
- · The instance of entity type ‘Customer’ cannot be tracked because another instance with the same key value for {‘Id’} is already being tracked.
- · .NET8实时更新nginx ip地址归属地
- · 解决.NET Blazor子组件不刷新问题
- · .NET8如何在普通类库中引用 Microsoft.AspNetCore
- · .NET8 Mysql SSL error
- · ASP.NET Core MVC的Razor视图渲染中文乱码的问题
- · .NETCORE 依赖注入服务生命周期
- · asp.net zero改mysql
- · .NET5面试汇总
- · .Net连接Mysql数据库的Convert Zero Datetime日期问题
- · vue使用element-ui中的Message 、MessageBox 、Notification
- · Asp.Net Core Filter 深入浅出的那些事-AOP