• 对配置文件 xml 进行操作


    个人喜欢用 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 文件进行配置,如此可以不用重启程序

  • 相关阅读:
    CentOS 7中cAdvisor的安装过程
    怎么查看centos版本
    使docker命令不用加sudo的方法
    Linux进程相关函数system,fork,exec函数族的区别
    git pre-commit hook failed 解决办法
    lint-staged 教程
    用webpack将多个scss文件打包成一个css文件
    js连按键盘事件
    vscode快捷键
    vim 操作命令大全
  • 原文地址:https://www.cnblogs.com/wang-min/p/10334826.html
Copyright © 2020-2023  润新知