分类

链接

2011 年 12 月
 1234
567891011
12131415161718
19202122232425
262728293031  

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > .NET > 正文
共享办公室出租
LINQ to XML
.NET 暂无评论 阅读(2,421)

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

============ 欢迎各位老板打赏~ ===========

本文版权归Bruce's Blog所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:LINQ to XML | Bruce's Blog

发表评论

留言无头像?