• 通过XElement查询XML的几种方法


    查询XML可以通过XMLDocument,也可以通过XDocument查询。

    本文介绍使用XElement查询XML的几种方法。

    首先使用一个测试的XML文件。

    <?xml version="1.0" encoding="utf-8" ?>
    <AOnlineOrg>
    <eSales>
    <Member SortNo="1">
    <Login>GUOXIN</Login>
    <PositionID>1-25ISRB</PositionID>
    <UserID>1-25ISRQ</UserID>
    <BU>ICSF</BU>
    </Member>
    <Member SortNo="2">
    <Login>LIUXIANG</Login>
    <PositionID>1-196945</PositionID>
    <UserID>1-19694A</UserID>
    <BU>ICSF</BU>
    </Member>
    <Member SortNo="3">
    <Login>QINYANG</Login>
    <PositionID>1-10DAMN</PositionID>
    <UserID>1-KJ3IA</UserID>
    <BU>ICSF</BU>
    </Member>
    <Member SortNo="4">
    <Login>XIAOCANFU</Login>
    <PositionID>1-FKZUJF</PositionID>
    <UserID>1-FKZUB5</UserID>
    <BU>ICSF</BU>
    </Member>
    <Member SortNo="5">
    <Login>XIAOHUAHU</Login>
    <PositionID>1-JWZ3R</PositionID>
    <UserID>1-JWZ4F</UserID>
    <BU>ICSF</BU>
    </Member>
    <Member SortNo="6">
    <Login>MANWEIZHAO</Login>
    <PositionID>1-JDSX2</PositionID>
    <UserID>1-1U5P9V</UserID>
    <BU>IAG</BU>
    </Member>
    <Member SortNo="7">
    <Login>LIJUANNIU</Login>
    <PositionID>1-IABTN</PositionID>
    <UserID>1-1PW39I</UserID>
    <BU>IAG</BU>
    </Member>
    <Member SortNo="8">
    <Login>QUANFANGZHOU</Login>
    <PositionID>1-H1MFS</PositionID>
    <UserID>1-ISATTR</UserID>
    <BU>IAG</BU>
    </Member>
    <Member SortNo="9">
    <Login>FENGYUANLI</Login>
    <PositionID>1-DHZB5</PositionID>
    <UserID>1-DI7M2</UserID>
    <BU>IAG</BU>
    </Member>
    </eSales>
    </AOnlineOrg>

    第一种查询方法:

    查询Member中属性SortNo小于3的,PositionID。

    xe.Name不能自己转换成string,需要xe.Name.LocalName才能转换为string类。xe.Value为XElement的值。

    如上图所示,XElement包括几个属性,FirstAttribute, HasAttributes, HasElements, IsEmpty, LastAttributes, Name, NodeType, Value。

            string xmlFile = Server.MapPath("DMF/DMFOrgXMLFile.xml");
    XDocument doc = XDocument.Load(xmlFile);

    var childList = from e1 in doc.Descendants("Member") where (int)e1.Attribute("SortNo") < 3 select e1.Element("PositionID");

    foreach (XElement xe in childList)
    {
    string s = xe.Name.LocalName;
    Label1.Text = xe.Value;
    }

    第二种查询方法:

    查询所有PositionID的清单。

           string xmlFile = Server.MapPath("DMF/DMFOrgXMLFile.xml");
    XDocument doc = XDocument.Load(xmlFile);

    foreach (XElement xe in doc.Descendants("PositionID"))
    {
    string s = xe.Name.LocalName;
    Label1.Text = xe.Value;
    }

    第三种方法:

    查询Member中Login为LIUXIANG,PositionID。

            string xmlFile = Server.MapPath("DMF/DMFOrgXMLFile.xml");
    XDocument doc = XDocument.Load(xmlFile);

    var childList = from e1 in doc.Descendants("Member") where e1.Element("Login").Value == "LIUXIANG" select e1;
    foreach (XElement xe in childList)
    {
    string s = xe.Name.LocalName;
    Label1.Text = xe.Value;
    }

    第四种方法:

    如果查询的结果是Elements,可以通过HasElements来进行下一层的查询:

            string xmlFile = Server.MapPath("DMF/DMFOrgXMLFile.xml");
    XDocument doc = XDocument.Load(xmlFile);

    var childList = from e1 in doc.Descendants("Member") where (int)e1.Attribute("SortNo") < 3 select e1;
    foreach (XElement xe in childList)
    {
    if (xe.HasElements)
    {
    foreach (XElement childElement in xe.Elements())
    {
    string s1 = childElement.Value;
    }
    }
    string s = xe.Name.LocalName;
    Label1.Text = xe.Value;
    }





  • 相关阅读:
    asp.net Ajax调用Aspx后台方法
    JS 通过字符串取得对应对象
    nginx js、css、图片 及 一些静态文件中出现 http://upstreamname:port 导致部分网页样式显示不正常
    jexus手动跨域设置
    HTTP Error 400. The request hostname is invalid
    at MySql.Data.MySqlClient.MySqlStream.ReadPacket 或 FUNCTION account.AddMinutes does not exist
    sql xml 入门
    Jexus .Net at System.Net.Sockets.Socket.Connect (System.Net.IPAddress[] addresses, System.Int32 port)
    关于SQL SERVER中的FLOAT转换为VARCHAR
    JS倒计时
  • 原文地址:https://www.cnblogs.com/zhoukaiwei/p/2251486.html
Copyright © 2020-2023  润新知