XElement(LINQ to XML )

XElement 类概述
更新:November 2007 XElement 类是 LINQ to XML 中的基础类之一。 它表示一个 XML 元素。 可以使用该类创建元素;更改元素内容;添加、更改或删除子元素;向元素中添加属性;或以文本格式序列化元素内容。 还可以与 System.Xml 中的其他类(例如 XmlReaderXmlWriter 和 XslCompiledTransform)进行互操作。 
XElement 功能 
本主题描述 XElement 类提供的功能。
构造 XML 树可以使用各种方式构造 XML 树,包括以下方式:
  • 可以在代码中构造 XML 树。 有关更多信息,请参见创建 XML 树
  • 可以从包括 TextReader、文本文件或 Web 地址 (URL) 在内的各种源解析 XML。 有关更多信息,请参见分析 XML
  • 可以使用 XmlReader 来填充树。 有关更多信息,请参见 ReadFrom
  • 如果您有一个可以将内容写入 XmlWriter 的模块,则可以使用 CreateWriter 方法来创建编写器,将该编写器传递到该模块,然后使用写入 XmlWriter 的内容来填充 XML 树。
  • 但是,创建 XML 树的最常见的方法如下: 

    VB
    C#
    C++
    F#
    JScript

    复制
    XElement contacts =    new XElement("Contacts",        new XElement("Contact",            new XElement("Name", "Patrick Hines"),             new XElement("Phone", "206-555-0144"),            new XElement("Address",                new XElement("Street1", "123 Main St"),                new XElement("City", "Mercer Island"),                new XElement("State", "WA"),                new XElement("Postal", "68042")            )        )    );
    另一个创建 XML 树的十分常用的方法是使用 LINQ 查询的结果来填充 XML 树,如下面的示例所示:

    VB
    C#
    C++
    F#
    JScript

    复制
    XElement srcTree = new XElement("Root",    new XElement("Element", 1),    new XElement("Element", 2),    new XElement("Element", 3),    new XElement("Element", 4),    new XElement("Element", 5));XElement xmlTree = new XElement("Root",    new XElement("Child", 1),    new XElement("Child", 2),    from el in srcTree.Elements()    where (int)el > 2    select el);Console.WriteLine(xmlTree);
    此示例产生以下输出:
    复制
    <Root>  <Child>1</Child>  <Child>2</Child>  <Element>3</Element>  <Element>4</Element>  <Element>5</Element></Root>
     
     
     
     
     //得到所有name字段的名字
            private static void GetAllUsername(XElement xe)
            {
                var userName = from un in xe.Descendants("Name")
                               select un.Value;
                foreach (var name in userName)
                {
                    Console.WriteLine("name {0}" ,name);
                }
            }
            //输出AGE是24的所有NODE
            private static void GetAge(XElement xe)
            {
                var age = from c in xe.Descendants("Age")
                            where c.Value == "24"
                            select c;
                foreach (var a in age)
                    Console.WriteLine("AGE: {0}", a);
            }
            //移除所有的Name字段
            private static void deleteElement(XElement xe)
            {
                var user = from u in xe.Descendants("User")
                           select u;
                foreach (var u in user)
                {

                    var names = from name in u.Descendants("Name")
                                select name;
                    names.Remove();
                }
            }
    posted @ 2010-07-30 09:56  jiangC  阅读(409)  评论(0编辑  收藏  举报