zoukankan      html  css  js  c++  java
  • linq查询xml

    1.加载xml字符串

    XElement root = XElement.Parse(@"<?xml version='1.0' encoding='utf-8'?>
    <Items> 
      <Item> 
        <Id>1</Id>  
        <Name>Name1</Name>  
        <Description>Test1</Description>  
        <Children> 
          <Item> 
            <Id>1.1</Id>  
            <Name>Name1.1</Name>  
            <Description>Test1.1</Description> 
          </Item> 
        </Children> 
      </Item>  
      <Item> 
        <Id>2</Id>  
        <Name>Name2</Name>  
        <Description>Test2</Description> 
      </Item> 
    </Items>
    
        ");
    
                var elements = root.Elements("Item");//root下的第一层Item(Id为1和2)



    XElement firstItem = root.Element("Item").Element("Name"); //第一个Item下的Name(Id为1)


    var descendants = root.Element("Item").Descendants("Name");//第一个Item下的所有Name(包括Children下的,Id为1和1.1)


    var xElements=root.Descendants("Name");//root下的所有子代的Name(Id为1,1.1,2)

    2.直接加载文件:

    var users = XElement.Load("TemplateUser.config").Elements("user"); 

    var user = users.FirstOrDefault(); 

    var Account = user.Element("Account").Value.ToString();  

    3.XmlDocument转换为XDocument

    XmlDocument doc = new XmlDocument();
    doc.LoadXml(xmlStr);   //xml字符串转成xml文档对象
                      

    XDocument xdoc =doc.ToXDocument(); //xmldocument转成xdoccument 扩展方法
    var eventId = xdoc.Document.Root.Element("EventID"); //根节点下的eventid节点
    if (eventId != null)
        {

              MessageBox.Show(eventId.Value); //15

        }

    扩展方法

    public static class XmlDocumentExtensions
        {
            public static XDocument ToXDocument(this XmlDocument document)
            {
                return document.ToXDocument(LoadOptions.None);
            }

            public static XDocument ToXDocument(this XmlDocument document, LoadOptions options)
            {
                using (XmlNodeReader reader = new XmlNodeReader(document))
                {
                    return XDocument.Load(reader, options);
                }
            }
        }

    4.xpath

    string xml = "<Users><User><Account>admin</Account><Pwd>123</Pwd></User><User><Account>admin1</Account><Pwd>1232</Pwd></User></Users>";
    var doc = XDocument.Parse(xml);
    var elements = doc.XPathSelectElements("//Account"); //admin admin1

    var tmp = doc.XPathSelectElements("//User/Account"); //admin admin1

    /*
    / 从根节点选取。
    // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
    . 选取当前节点。
    .. 选取当前节点的父节点。
    @ 选取属性。
    */

    From:http://www.cnblogs.com/xuejianxiyang/p/5377486.html

  • 相关阅读:
    不可或缺 Windows Native (15)
    不可或缺 Windows Native (14)
    不可或缺 Windows Native (13)
    不可或缺 Windows Native (12)
    不可或缺 Windows Native (11)
    不可或缺 Windows Native (10)
    不可或缺 Windows Native (9)
    不可或缺 Windows Native (8)
    不可或缺 Windows Native (7)
    不可或缺 Windows Native (6)
  • 原文地址:https://www.cnblogs.com/xuejianxiyang/p/5377486.html
Copyright © 2011-2022 走看看