个人喜欢用 Linq 的方式来进行操作,方便快捷

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="LargePrintName" value="Zebra ZT410R (203 dpi)"/>
<add key="SmallPrintName" value="Zebra ZT410R (203 dpi) #2"/>
<add key="UrlPrefix" value="http://101.201.153.239:8071/api/"/>
<add key="PageSize" value="10"/>
<add key="LabelFormatRootDirectory" value="LabelFormat"/>
<add key="LabelPrintTimeout" value="60"/>
</appSettings>
</configuration>
XElement xe = XElement.Load("RfidPrint.exe.config");//加载XML文件,获取其内容

XElement largeElement = (from ele in xe.Element("appSettings").Elements()
where ele.Attribute("key").Value == largePrintName
select ele).SingleOrDefault();
//获取 appSettings 节点下的所有子节点,找到子节点的属性 key 值为 largePrintName的,获取此节点 if (largeElement != null)
{
largeElement.Attribute("value").Value = txtLargePrinterName.Text;
xe.Save("RfidPrint.exe.config");
}
//将此节点的value属性改成 txtLargePrinterName.Text 保存即可

一开始我是想着是通过以下方式,直接获取我所要的add节点,开始操作,但是却无法实现,有些问题

XElement largeElement = (from ele in xe.Element("add")
where ele.Attribute("key").Value == largePrintName
select ele).SingleOrDefault();
//xe.Element("add") 获取的根本不是元素集合,只是单个对象,因此有问题

然后我想 直接获取 add 节点的集合,结果还是不起作用

XElement largeElement = (from ele in xe.Elements("add")
where ele.Attribute("key").Value == largePrintName
select ele).SingleOrDefault();
//问题在于其实 Elements 不是这么直接使用的,其实它是XElement对象的方法
//按照 XElement.Elements(节点名称) 这种方式来试用,如下

思路应该是:首先获取一个父节点 xe.Element("appSettings") 然后获取父节点下的节点 add Elements("add") 然后再根据节点值,属性获取自己想要的节点进行一系列操作

XElement largeElement = (from ele in xe.Element("appSettings").Elements("add")
where ele.Attribute("key").Value == largePrintName
select ele).SingleOrDefault(); if (largeElement != null)
{`
largeElement.Attribute("value").Value = txtLargePrinterName.Text;
xe.Save("RfidPrint.exe.config");
}

[参考资料](https://www.cnblogs.com/wujy/p/3366812.html)

注意点:我们对配置文件进行修改的话,程序必须重新启动一次才会生效,有的时候想避免这种情况,可以不用在配置文件中配置,而是另起一个 XML 文件进行配置,如此可以不用重启程序

对配置文件 xml 进行操作的更多相关文章

  1. Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解

    封面:洛小汐 作者:潘潘 做大事和做小事的难度是一样的.两者都会消耗你的时间和精力,所以如果决心做事,就要做大事,要确保你的梦想值得追求,未来的收获可以配得上你的努力. 前言 上一篇文章 <My ...

  2. VS2012 Unit Test —— 我对IdleTest库动的大手术以及对Xml相关操作进行测试的方式

    [1]我的IdleTest源码地址:http://idletest.codeplex.com/ [2]IdleTest改动说明:2013年10月份在保持原有功能的情况下对其动了较大的手术,首先将基本的 ...

  3. sql server中对xml进行操作

    一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XM ...

  4. Spring MVC的配置文件(XML)的几个经典案列

    1.既然是配置文件版的,那配置文件自然是必不可少,且应该会很复杂,那我们就以一个一个的来慢慢分析这些个经典案列吧! 01.实现Controller /* * 控制器 */ public class M ...

  5. 对XML的操作

    对XML的操作主要使用到的语法示例: using System.Xml; private static string XmlMarketingStaff = AppDomain.CurrentDoma ...

  6. Xml通用操作类

    using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Xml ...

  7. C# XML流操作简单实例

    这里我们先介绍操作XML文件的两个对象:XmlTextReader和XmlTextWriter打开和读取Xml文件使用到的对象就是XmlTextReader对象.下面的例子打开了与程序在同一路径下的一 ...

  8. SQL Server 2008 对XML 数据类型操作

    原文 http://www.cnblogs.com/qinjian123/p/3240702.html 一.前言 从 SQL Server 2005 开始,就增加了 xml 字段类型,也就是说可以直接 ...

  9. 我来讲讲在c#中怎么进行xml文件操作吧,主要是讲解增删改查!

    我把我写的四种方法代码贴上来吧,照着写没啥问题. 注: <bookstore> <book> <Id>1</Id> <tate>2010-1 ...

随机推荐

  1. 漏测BUG借鉴

    2. websocket: 用户频繁刷新,后台每次请求新的排队,内存溢出 1. websocket: 北京中心连接正常,外地中心,连接超时,应考虑到外地延迟问题

  2. [Educational Round 59][Codeforces 1107G. Vasya and Maximum Profit]

    咸鱼了好久...出来冒个泡_(:з」∠)_ 题目连接:1107G - Vasya and Maximum Profit 题目大意:给出\(n,a\)以及长度为\(n\)的数组\(c_i\)和长度为\( ...

  3. History of program (language).

    1 编程语言的发展历程及未来趋势 1.1 编程语言的发展 · 1946 Plankalkul     Konrad Zuse,一位德国工程师,他躲藏在巴伐利亚附近的阿尔卑斯山上时,独立开发了Plank ...

  4. APP研发录笔记

    一.消灭全局变量 在内存不足时,系统会回收一部分闲置的资源,由于App被切换到后台,所以之前存放的全局变量很容易被回收,这时再切换到前台继续使用,会报空指针崩溃.想彻底解决这个问题,就要使用序列化. ...

  5. 初学Java的那段日子

    最近因为一个朋友想要学习Java,在帮助他找教程的过程中回想到了我自己当年学习Java的那段岁月,故写了此篇文章总结了一下初学Java所必须要掌握的知识点,然后把一部分常见的面试题罗列出来.给予刚刚开 ...

  6. [Swift]LeetCode124. 二叉树中的最大路径和 | Binary Tree Maximum Path Sum

    Given a non-empty binary tree, find the maximum path sum. For this problem, a path is defined as any ...

  7. [Swift]LeetCode215. 数组中的第K个最大元素 | Kth Largest Element in an Array

    Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...

  8. MySQL 规范及优化

    一.建库建表优化 1.核心规范(推荐) 表字符集选择UTF8 (“表情”字段单独设置为其他字符集) 存储引擎使用INNODB 不在库中存储图片.文件等 使用可变长字符串(varchar) 每张表数据量 ...

  9. linux终端文本编辑神器vi的使用

    vi —— 终端中的编辑器 目标 vi 简介 打开和新建文件 三种工作模式 常用命令 分屏命令 常用命令速查图 01. vi 简介 1.1 学习 vi 的目的 在工作中,要对 服务器 上的文件进行 简 ...

  10. 8.Django缓存和信号

    缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将某个views的返回值保存至内存或者memcache中, ...