1607...">
美文网首页
C# 解析XML文件

C# 解析XML文件

作者: Ritchie_Li | 来源:发表于2022-08-11 22:17 被阅读0次

    XML文件结构如下:

    <?xml version="1.0" encoding="utf-8"?>

    <Meters>

      <Meter Ordernumber="G020539612S0">

        <Id>16071536</Id>

        <Pass>0</Pass>

        <Fail>1</Fail>

        <Status>0</Status>

        <Date>2020/1/14 19:22:29</Date>

        <Ordernumber>G020539612S0</Ordernumber>

        <Sapnumber>157999</Sapnumber>

        <Type>RADIO5_TRX_SAM</Type>

        <Elapsed>0</Elapsed>

      </Meter>

      <Meter Ordernumber="G014943912S0">

        <Id>16073311</Id>

        <Pass>1</Pass>

        <Fail>0</Fail>

        <Status>1</Status>

        <Date>2020/1/14 19:19:41</Date>

        <Ordernumber>G014943912S0</Ordernumber>

        <Sapnumber>166703</Sapnumber>

        <Type>BASIC</Type>

        <Elapsed>25</Elapsed>

      </Meter>

    .............

    </Meters>

    解析XML文件的方式多种,没有说一定要使用如下的方式,如下方式只是其中的一种方式,验证可行。添加引用 using System.Xml.Linq;

    从XML结构来看,Ordernumber 为每个表的属性字段

    1. 测试获取属性字段值 Ordernumber

    xmlfile = "Counts.xml"

    XElement xes = XElement.Load(xmlfile);

     //order numbers 属性

    IEnumerable<string> orderNrs = from ods in xes.Descendants("Meter")

                                              select (string)ods.Attribute("Ordernumber");

     foreach (var od in orderNrs)

     {

             Console.WriteLine(od);

    }

    输出:

    能将每个Meter的OrderNumber属性值获取成功

    2. 选择任意节点测试 ID

    var IdList = from id in xes.Descendants("Id")

                            select id;

     foreach (var item in IdList)

     {

         Console.WriteLine(item);

         Console.WriteLine(item.Value);

     }

    输出:

    获取每个节点的Id 成功。

    3. 筛选MeterID的值

    List<string> ids = xes.Elements("Meter").Elements("Id")

                                  .Select(i => i.Value)

                                  .ToList();

    foreach (var i in ids)

     {

              Console.WriteLine(i);

    }

    输出:

    4. 筛选状态为1的产品的ID,和测试时间

    IEnumerable<XElement> eles = from item in xes.Descendants("Meter")

                                            where (int)item.Element("Status") == 1

                                            select item;

                foreach (var es in eles)

                {

                    Console.WriteLine(es.Element("Id"));

                    Console.WriteLine(es.Element("Date"));

                }

    5. 筛选状态为1的产品的ID,和测试时间,且时间降序排列

    IEnumerable<XElement> eles = from item in xes.Descendants("Meter")

                                            where ((int)item.Element("Status") == 1 && (int)item.Element("Elapsed") > 30)

                                            orderby (int)item.Element("Id") descending

                                            select item;

                foreach (var es in eles)

                {

                    Console.WriteLine(es.Element("Id"));

                    Console.WriteLine(es.Element("Date"));

                }

    输出:

    依据时间倒序输出OK。

    相关文章

      网友评论

          本文标题:C# 解析XML文件

          本文链接:https://www.haomeiwen.com/subject/ubitgrtx.html