c#提供了System.Xml.Linq操作xml文件,非常方便,本文主要介绍如何应用System.Xml.Linq读取xml文件。

xml文本

<?xml version="1.0" encoding="UTF-8"?>
<TestScript>
<default>
<id>5DC48A0B-11DC-4B40-A41E-F28AE4260538</id>
<name>SetNetworkAdapter</name>
<title>设置IP地址</title>
<desc></desc>
</default>
<channels>
<channel id="1" name="ap_agent">
<open>127.0.0.1:4754</open>
</channel>
</channels>
<actions>
<action id="1" waitResponse="false" breakOnFail="false">
<io>ap_agent</io>
<predelay>0</predelay>
<command>SetNetworkAdapter</command>
<repeat>0</repeat>
<postdelay>0</postdelay>
<params>
<param id="1" order="1" name="ip" title="ip地址" value="192.168.1.112" unit="" type="input" enable="true" limitUp="" limitDown="" hint=""/>
<param id="2" order="2" name="mask" title="子网掩码" value="255.255.255.0" unit="" type="input" enable="true" limitUp="" limitDown="" hint=""/>
<param id="3" order="3" name="gateway" title="网关" value="192.168.1.1" unit="" type="input" enable="true" limitUp="" limitDown="" hint=""/>
</params>
</action>
</actions>
</TestScript>

关键代码

public XmlAction LoadXml(string xmlFile)
{
XmlAction ret = new XmlAction();
XElement xe = XElement.Load(xmlFile);
XElement eleAction = xe.Elements("actions").Elements("action").First();
ret.Id = eleAction.Attribute("id").Value;
ret.WaitResponse = eleAction.Attribute("waitResponse").Value == "true";
ret.BreakOnFail = eleAction.Attribute("breakOnFail").Value == "true";
ret.Io = eleAction.Element("io").Value;
ret.Predelay = Convert.ToInt32(eleAction.Element("predelay").Value);
ret.Postdelay = Convert.ToInt32(eleAction.Element("postdelay").Value);
ret.Command = eleAction.Element("command").Value;
ret.Repeat = Convert.ToInt32(eleAction.Element("repeat").Value);
ret.Params = new List<Param>();
foreach (XElement para in eleAction.Elements("params").Elements("param"))
{
Param p = new Param();
ret.Params.Add(p);
p.Id = para.Attribute("id").Value;
p.Enable = para.Attribute("enable").Value == "true";
p.Hint = para.Attribute("hint").Value;
p.LimitDown = para.Attribute("limitDown").Value;
p.LimitUp = para.Attribute("limitUp").Value;
p.Name = para.Attribute("name").Value;
p.Order = para.Attribute("order").Value;
p.Title = para.Attribute("title").Value;
p.Type = para.Attribute("type").Value;
p.Unit = para.Attribute("unit").Value;
p.Value = para.Attribute("value").Value; }
return ret;
}

应用Xml.Linq读xml文件的更多相关文章

  1. C#操作XML(读XML,写XML,更新,删除节点,与dataset结合等)【转载】

    已知有一个XML文件(bookstore.xml)如下: Corets, Eva 5.95 1.插入节点 往节点中插入一个节点: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  2. LinqToXML~读XML文件

    linq的出现,带给我们的是简结,快速,可读性,它由linq to sql,linq to object,linq to XML组成,我的博客之前有对linq to sql的讲解,而今天,我将讲一个l ...

  3. LINQ to XML 编程基础

    1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: 隐藏行号 复制代码 ?创建 XML public static void CreateDocumen ...

  4. C# ~ 从 XML 到 Linq 到 Linq to XML

    .XML 可扩展标记语言 (Extensible Markup Language), 标记 (markup) 是关键部分,是标准通用标记语言 (Standard Generalized Markup ...

  5. C#学习之Linq to Xml

    前言 我相信很多从事.NET开发的,在.NET 3.5之前操作XML会比较麻烦,但是在此之后出现了Linq to Xml,而今天的主人公就是Linq to Xml,废话不多说,直接进入主题. 题外:最 ...

  6. C#中的Linq to Xml详解

    这篇文章主要介绍了C#中的Linq to Xml详解,本文给出转换步骤以及大量实例,讲解了生成xml.查询并修改xml.监听xml事件.处理xml流等内容,需要的朋友可以参考下 一.生成Xml 为了能 ...

  7. Linq世界走一走(LINQ TO XML)

    前言:Linq to xml是一种使用XML的新方法.从本质上来说,它采用了多种当前使用的XML处理技术,如DOM和XPath,并直接在.NET Framework内将它们组合为一个单一的编程接口.L ...

  8. LINQ to XML LINQ学习第一篇

    LINQ to XML LINQ学习第一篇 1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: public static void CreateDoc ...

  9. C# LINQ学习笔记五:LINQ to XML

    本笔记摘抄自:https://www.cnblogs.com/yaozhenfa/p/CSharp_Linq_For_Xml.html,记录一下学习过程以备后续查用. 一.生成xml 1.1创建简单的 ...

随机推荐

  1. 【转】c++面试基础

    1,关于动态申请内存 答:内存分配方式三种: (1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在. 全局变量,static变量. (2)在栈上创建:在执行函 ...

  2. android仿系统Launcher界面,实现分屏,左右滑动效果(ViewSwitcher)

    ViewSwitcher代表了视图切换组件, 本身继承了FrameLayout ,可以将多个View叠在一起 ,每次只显示一个组件.当程序控制从一个View切换到另个View时,ViewSwitche ...

  3. spring框架(1)— 依赖注入

    依赖注入 spring核心容器就是一个超级大工厂,所以的对象(数据源.hibernate SessionFactory等基础性资源)都会被当做spring核心容器的管理对象——spring把容器中的一 ...

  4. ACM 第十天

    动态规划2 1.树形DP 2.概率DP 3.区间DP 模板 ; len < n; len++) { //操作区间的长度 , j = len; j <= n; i++, j++) { //始 ...

  5. LintCode-56.两数之和

    两数之和 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 1 到 n, ...

  6. iOS- 利用UIImageView自己整了个不会说话的汤姆猫

    1.实现思路 先说说我实现它的主要思路,很简单,主要利用UIImageView连续动画播放,和按钮的点击事件,就可以完成了这么一个简单的不会说话的汤姆猫. 2.实现细节 2.1.加载本地字典里保存的本 ...

  7. YaoLingJump开发者日志(五)V1.0版本完成

    跳跃吧瑶玲下载连接 官网下载 百度网盘下载 提取码:apx9 介绍   总算完成V1.0版本了,下面来简单地介绍一下吧!   打开游戏,最开始会进入到"主界面".   右上角的按钮 ...

  8. PokeCats开发者日志(九)

      现在是PokeCats游戏开发的第十五天的中午,总算过了规范性检查这一关. 但愿能过吧.

  9. 同步锁(synchronized)使用三要素

    1.代码被多个线程访问 2.代码中有共享的数据 3.共享数据被多个语句操作

  10. BZOJ4868 Shoi2017期末考试(三分+贪心)

    容易想到枚举最晚发布成绩的课哪天发布,这样与ti和C有关的贡献固定.每门课要么贡献一些调节次数,要么需要一些调节次数,剩下的算贡献也非常显然.这样就能做到平方级别了. 然后大胆猜想这是一个凸函数三分就 ...