个人喜欢用 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. php基础-mysqli

    基本八个步骤 //连接数据库 $link = mysqli_connect('localhost', 'root', ''); //判断是否连接成功 if (!$link) { exit('数据库连接 ...

  2. codeforces 13 D

    给你500个红点和蓝点,让你找多少点红点构成的三角形里没有蓝点. 巧妙啊!我们考虑一个很远位置的点,不妨设这个为O,然后n^2枚举红点,考虑Oij里面蓝点的个数, 然后 对于 ijk这个三角形,我们可 ...

  3. RHEL7 配置网络yum源

    redhat系统安装好尽管默认带有yum,但是redhat的更新包只对注册用户有效(收费).所以需要更换yum源. 基本的流程就是: 1.删除redhat7.0系统自带的yum软件包: 2.自行下载所 ...

  4. Axure环境安装,组件引入,使用示例

    资源下载: Axure的中文官方下载地址:https://www.axure.com.cn/3510/ Axure汉化包:https://www.axure.com.cn/2616/ Axure元件库 ...

  5. JAVA小白开发环境配置(编译器为Idea)

    JDK配置 1.首先到官网下载最新版JDK:Oracle官网下载 Accept License Agreement–>下载适合自己pc版本的jdk(此处以64位windows为例.x86是32位 ...

  6. 微信小程序写tab切换

    微信小程序之tab切换效果,如图: 最近在学习微信小程序并把之前的公司app搬到小程序上,挑一些实现效果记录一下(主要是官方文档里没说的,毕竟官方文档只是介绍功能) .wxml代码: <view ...

  7. 【面试篇】资深招聘HR有哪些面试技巧?

    15年资深招聘HR总结的面试技巧     1.做一下自我介绍 了解应聘者的基本信息和工作经历 2.以往工作中您的职责是什么? 了解应聘者的相关工作经验和其系统性全面性 3.请讲一下您以往的工作经历. ...

  8. 使用cloudreve搭建个人网盘

    这次将腾迅的对象存储cos挂载到了服务器上,就想自己搭建个网盘,虽然每月50G的空间和10G流量,也够用了 之前写过使用owncloud来搭建个人网盘,使用起来挺方便,就是不知道为什么感觉打开速度慢, ...

  9. [Swift]LeetCode206. 反转链表 | Reverse Linked List

    Reverse a singly linked list. Example: Input: 1->2->3->4->5->NULL Output: 5->4-> ...

  10. [Swift]LeetCode226. 翻转二叉树 | Invert Binary Tree

    Invert a binary tree. Example: Input: 4 / \ 2 7 / \ / \ 1 3 6 9 Output: 4 / \ 7 2 / \ / \ 9 6 3 1 Tr ...