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