zoukankan      html  css  js  c++  java
  • LINQ to XML

    LINQ to XML 可以看作是一个 “better DOM” 编程模型,可以和 System.Xml.dll 程序集中的很多成员交互。

    一、命名空间

    System.Xml.Linq.dll 程序集定义了三个命名空间:System.Xml.Linq, System.Xml.Schema  和 System.Xml.XPath

    最核心的是 System.Xml.Linq, 定义了对应 XML 文档个方面的很多类型

    Member of System.Xml.Linq

    Meaning in Life

    XAttribute

    Represents an XML attribute on a given XML element

    XComment

    Represents an XML comment

    XDeclaration

    Represents the opening declaration of an XML document

    XDocument

    Represents the entirety of an XML document

    XElement

    Represents a given element within an XML document

    XName/XNamespace

    Provide a very simple manner to define and reference XML namespaces


    二、编程方式创建XML文档

    以前的 .NET XML编程模型需要使用很多冗长的 DOM API,而 LINQ to XML 则完全可以用与 DOM 无关的方式与 XML 文档交互。这样不但大大减少了代码行,而且这种编程模型可以直接映射到格式良好的XML文档结构。

    static void CreateFunctionalXmlElement()
    {
    // A "functional" approach to build an
    // XML element in memory.
    XElement inventory =
    new XElement("Inventory",
    new XElement("Car"new XAttribute("ID""1"),
    new XElement("Color""Green"),
    new XElement("Make""BMW"),
    new XElement("PetName""Stan")
    )
    );
    // Call ToString() on our XElement.
    Console.WriteLine(inventory);
    }


    在内存中创建XML文档

            static void CreateFunctionalXmlDoc()
            {
                XDocument inventoryDoc 
    =
                
    new XDocument(
                
    new XDeclaration("1.0""utf-8""yes"),
                
    new XComment("Current Inventory of AutoLot"),
                
    new XElement("Inventory",
                
    new XElement("Car"new XAttribute("ID""1"),
                
    new XElement("Color""Green"),
                
    new XElement("Make""BMW"),
                
    new XElement("PetName""Stan")
                ),
                
    new XElement("Car"new XAttribute("ID""2"),
                
    new XElement("Color""Pink"),
                
    new XElement("Make""Yugo"),
                
    new XElement("PetName""Melvin")
                )
                )
                );
                
    // Display the document and save to disk.
                Console.WriteLine(inventoryDoc);
                inventoryDoc.Save(
    "SimpleInventory.xml");
            }

    三、使用 LINQ 查询创建XML文档

    static void CreateXmlDocFromArray()
    {
    // Create an anonymous array of anonymous types.
    var data = new [] {
    new { PetName = "Melvin", ID = 10 },
    new { PetName = "Pat", ID = 11 },
    new { PetName = "Danny", ID = 12 },
    new { PetName = "Clunker", ID = 13 }
    };
    // Now enumerate over the array to build
    // an XElement.
    XElement vehicles =
    new XElement("Inventory",
    from c 
    in data
    select 
    new XElement("Car",
    new XAttribute("ID", c.ID),
    new XElement("PetName", c.PetName)
    )
    );
    Console.WriteLine(vehicles);
    }


    四、加载和解析XML内容

     static void LoadExistingXml()
            {
                
    // Build an XElement from string.
                string myElement =
                                            
    @"<Car ID ='3'>
                                <Color>Yellow</Color>
                                <Make>Yugo</Make>
                                </Car>
    ";
                XElement newElement 
    = XElement.Parse(myElement);
                Console.WriteLine(newElement);
                Console.WriteLine();
                
    // Load the SimpleInventory.xml file.
                XDocument myDoc = XDocument.Load("SimpleInventory.xml");
                Console.WriteLine(myDoc);
            }


    六、遍历内存中的XML文档

    XML示例:

    <?xml version="1.0" encoding="utf-8"?>
    <Inventory>
      
    <Car carID ="0">
        
    <Make>Ford</Make>
        
    <Color>Blue</Color>
        
    <PetName>Chuck</PetName>
      
    </Car>
      
    <Car carID ="1">
        
    <Make>VW</Make>
        
    <Color>Silver</Color>
        
    <PetName>Mary</PetName>
      
    </Car>
      
    <Car carID ="2">
        
    <Make>Yugo</Make>
        
    <Color>Pink</Color>
        
    <PetName>Gipper</PetName>
      
    </Car>
      
    <Car carID ="55">
        
    <Make>Ford</Make>
        
    <Color>Yellow</Color>
        
    862 CHAPTER 24 n PROGRAMMING WITH THE LINQ APIS
        
    <PetName>Max</PetName>
      
    </Car>
      
    <Car carID ="98">
        
    <Make>BMW</Make>
        
    <Color>Black</Color>
        
    <PetName>Zippy</PetName>
      
    </Car>
    </Inventory>


    加载

    static void Main(string[] args)
            {
                Console.WriteLine(
    "***** Fun with LINQ to XML *****\n");
                
    // Load the Inventory.xml document into memory.
                XElement doc = XElement.Load("Inventory.xml");
                
    // We will author each of these next
                PrintAllPetNames(doc);
                Console.WriteLine();
                GetAllFords(doc);
                Console.ReadLine();
            }



    遍历

    static void PrintAllPetNames(XElement doc)
    {
    var petNames 
    = from pn in doc.Descendants("PetName")
    select pn.Value;
    foreach (var name in petNames)
    Console.WriteLine(
    "Name: {0}", name);
    }


    查询

    static void GetAllFords(XElement doc)
            {
                var fords 
    = from c in doc.Descendants("Make")
                            
    where c.Value == "Ford"
                            select c;
                
    foreach (var f in fords)
                    Console.WriteLine(
    "Name: {0}", f);
            }


    七、修改 XML文档

    static void AddNewElements(XElement doc)
    {
    // Add 5 new purple Fords to the incoming document.
    for (int i = 0; i < 5; i++)
    {
    // Create a new XElement
    XElement newCar =
    new XElement("Car"new XAttribute("ID", i + 1000),
    new XElement("Color""Green"),
    new XElement("Make""Ford"),
    new XElement("PetName""")
    );
    // Add to doc.
    doc.Add(newCar);
    }
    // Show the updates.
    Console.WriteLine(doc);
    }
  • 相关阅读:
    这2天参加WinHEC大会,园子里以有很多介绍,就不多说了,会上用手机录了一段windows 最新触摸屏操作技术演示,可以看看
    自启动U盘,一个会流行的好玩意
    为什么数据库导入是自动增量属性自动消失乐呢?
    网络带宽利用率的一般计算方法
    防止ARP病毒的一个小窍门
    Windows 系统补丁管理策略
    PDC大会就要召开了,园里有去的吗,看到一片文章,不知道windows7是否真的很好
    门户框架在项目和产品中的使用心得
    这段时间开发了一个共享软件,主要做IP资源管理的(SmartIPView),大家有兴趣可以看看,或给指点指点
    OpenGL自学教程1(窗口建立)
  • 原文地址:https://www.cnblogs.com/engine1984/p/1702344.html
Copyright © 2011-2022 走看看