解析XML有很多方法,之前用专门写的XMLProcess 或XMLHelper 解析类。其实有个较简单的解析就是用Linq查询。

例如有如下XML

<?xml version="1.0" encoding="utf-8" ?>
<outArgs>
<arg-xml>
<scanners>
<scanner type="USBIBMHID">
<scannerID>2</scannerID>
<modelnumber>DS6708-SR20007ZZR</modelnumber>
<serialnumber>1216300503088</serialnumber>
<GUID>4D6059D05BEA5745061D7D0B811E7CC</GUID>
</scanner>
<scanner type="USBIBMHID">
<scannerID>3</scannerID>
<modelnumber>DS6708-SR20007ZZR</modelnumber>
<serialnumber>2216300503022</serialnumber>
<GUID>556059D05BEA5745061D7D0B811E755</GUID>
</scanner>
<scanner type="SNAPI">
<scannerID>4</scannerID>
<modelnumber>DS457-SR001R</modelnumber>
<serialnumber>3316300503033</serialnumber>
<GUID>666059D05BEA5745061D7D0B811E766</GUID>
</scanner>
</scanners>
<status>1</status>
</arg-xml>
</outArgs>

1. 查询所有“USBIBMHID”的Scanner的数量。

int number = XElement.Parse(outXml).XPathSelectElements("//scanner[@type = 'USBIBMHID']").Count();

2. 查询 type 为 “SNAPI"的Scanner的ID。 (即查找结点scanner的子结点scannerID的Inner Text)

            XDocument xDoc = XDocument.Load("XMLFile1.xml");
var scanners = xDoc.Descendants("scanner").Where(node => node.Attribute("type").Value == "USBIBMHID").FirstOrDefault(); List<string> idValues = new List<string>();
if (scanners != null)
{
idValues.Add(scanners.Descendants("scannerID").Single().Value);
}

实际应用中,使用XML序列化来解析XML并运用的程序中是一个比较方便的方法。

使用XML序列化可以直接把Data 映射到对应的类上,从而在程序中使用。

(C# ) 解析XML。的更多相关文章

  1. Android 解析XML文件和生成XML文件

    解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...

  2. Android之解析XML

    1.XML:可扩展标记语言. 可扩展标记语言是一种很像超文本标记语言的标记语言. 它的设计宗旨是传输数据,而不是显示数据. 它的标记没有被预定义.需要自行定义标签. 它被设计为具有自我描述性. 是W3 ...

  3. Android之Pull解析XML

    一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...

  4. Android之DOM解析XML

    一.DOM解析方法介绍 DOM是基于树形结构的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树,检索所需数据.分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和更新节点信息 ...

  5. Android之SAX解析XML

    一.SAX解析方法介绍 SAX(Simple API for XML)是一个解析速度快并且占用内存少的XML解析器,非常适合用于Android等移动设备. SAX解析器是一种基于事件的解析器,事件驱动 ...

  6. Android 使用pull,sax解析xml

    pull解析xml文件 1.获得XmlpullParser类的引用 这里有两种方法 //解析器工厂 XmlPullParserFactory factory=XmlPullParserFactory. ...

  7. 用 ElementTree 在 Python 中解析 XML

    用 ElementTree 在 Python 中解析 XML 原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python- ...

  8. java解析xml的三种方法

    java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...

  9. WP8解析XML格式文件

    DOTA2 WebAPI请求返回的格式有两种,一种是XML,一种是JSON,默认是返回JSON格式,如果要返回XML格式的话,需要在加上format=xml. 这里举一个简单的解析XML格式的例子(更 ...

  10. JAVA使用SAX解析XML文件

    在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...

随机推荐

  1. leetcode 41 First Missing Positive ---java

    Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0]  ...

  2. 学霸网站之NABCD

    1.需求(Need) 随着社会的发展,互联网产业得到了飞速的发展,如今,互联网在各个领域都取得了至关重要的作用,随之而来的数量庞大的数据也让我们每个人在学习生活中倍感压力,如何才能在这些数据中找到自己 ...

  3. HDU 1087 Super Jumping! Jumping! Jumping

    HDU 1087 题目大意:给定一个序列,只能走比当前位置大的位置,不可回头,求能得到的和的最大值.(其实就是求最大上升(可不连续)子序列和) 解题思路:可以定义状态dp[i]表示以a[i]为结尾的上 ...

  4. 利用Web服务器网络打洞

    好了有些标题党了.这里想说的是:某些网络,除了http 80服务,其它端口的服务都被限制了,这个时候可以用http web服务器来进行代理转发. 以Apache为例,支持ssh登录到其它服务器的配置如 ...

  5. Win10 EPLAN新建项目出现“一个内部错误的解决方法”

    [环境] Win10 64bits,EPLAN 2.4 64bits. [表现] 新建项目的时候出现"一个内部错误"的提示,然后软件卡死. [解决方案] 计算机管理--服务--EP ...

  6. matlab绘图+计算心得

    Matlab 常用于做一些计算实验和绘图,我主要用matlab来绘图件.Matlab 可以用GUI界面来完成绘图,但是既然能用鼠标完成的绘图,那么一定能用代码命令来完成绘图,个人比较喜欢用命令来完成m ...

  7. 论文笔记之:Heterogeneous Image Features Integration via Multi-Modal Semi-Supervised Learning Model

    Heterogeneous Image Features Integration via Multi-Modal Semi-Supervised Learning Model ICCV 2013 本文 ...

  8. 在easyui datagrid中formatter数据后使用linkbutton

    http://ntzrj513.blog.163.com/blog/static/2794561220139245411997/ formatter:function(value,rowData,ro ...

  9. how-to-install-hyper-v-on-a-virtual-machine-in-hyper-v.aspx

    BEFORE STARTING IT IS IMPORTANT TO KNOW THAT THIS ENVIRONMENT IS NOT SUPPORTED BY MICROSOFT. USE IT ...

  10. C编码-1

    两个关键点,一个是要懂C语法,另一个要懂业务知识,即能够分解问题 字节序测试程序 不同cpu平台上字节序通常也不一样,下面写个简单的C程序,它可以测试不同平台上的字节序. 网络字节序说是大端字节序. ...