• c# 使用模板方式构造xml文档


      现有如下的需求,比如一个 设备.xml 文件,里面都是每个设备的信息,当然它们的配置属性都一样,加入用户点击添加一个设备,然后要将用户添加的设备各种信息写入到这个 设备.xml文件中,可能你脑海中第一个想到的是一个一个XmlElement的构造,然后再添加到设备文件中,其实没什么,我最开始也这么想,但是用大腿想想这样的效率和可操作性都很差,特别是当属性增多时效率会很烂

      既然它们的属性都一样,这让我想到了c++的模板,以及像诸如smarty,valocity,jstl之类的便签库,其实思想都一样,定义模板,然后动态生成。

      好了,有了想法,那就开始吧。这是一个模板xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <测点>
     3       <标签></标签>
     4       <名称></名称>
     5       <描述></描述>
     6       <工程单位></工程单位>
     7       <显示格式></显示格式>
     8       <最大值></最大值>
     9       <最小值></最小值>
    10       <报警设置 状态="">
    11         <低报 状态=""></低报>
    12         <低低报 状态=""></低低报>
    13         <高报 状态=""></高报>
    14         <高高报 状态=""></高高报>
    15       </报警设置>
    16       <变量逻辑 索引="0"></变量逻辑>
    17       <关联变量>
    18         <输入变量1></输入变量1>
    19         <输入变量2></输入变量2>
    20         <输出变量></输出变量>
    21         <常量k></常量k>
    22         <常量b></常量b>
    23       </关联变量>
    24 </测点>

    就照这个xml来填充

     1 #region 使用xml模板快速添加节点
     2         /// <summary>
     3         /// 使用了一个xml节点模板,主要用于增加节点
     4         /// </summary>
     5         /// <param name="xmlpath"></param>
     6         /// <param name="tag"></param>
     7         /// <param name="name"></param>
     8         public static void createBigNode(string xmlpath, string rootpart, string tag, string name)
     9         {
    10             XmlDocument template = new XmlDocument();
    11             template.Load(xmlpath + "\\template.xml");
    12             XmlNode root = template.DocumentElement;
    13             ((XmlElement)root.SelectSingleNode("标签")).InnerText = tag;
    14             ((XmlElement)root.SelectSingleNode("名称")).InnerText = name;
    15             XmlDocument xmlDoc = new XmlDocument();
    16             xmlDoc.Load(xmlpath + "\\omstag.cfg");
    17             string selectstr = "/ 测点配置 /" + rootpart;
    18             XmlNode appendnode = xmlDoc.SelectSingleNode(selectstr);
    19 
    20             appendnode.AppendChild(xmlDoc.ImportNode(root, true));
    21             xmlDoc.Save(xmlpath + "\\omstag.cfg");
    22 
    23         }
    24         #endregion
    View Code

    xmlpath是 模板xml的路径,  rootpath是 设备xml的路径

    想废话一句,c#操作xml还是使用linq最简便。杠杠地

  • 相关阅读:
    22、闭包与继承
    合并两个有序链表
    7. 整数反转
    Linux grep命令
    认识与学习BASH
    微信支付-H5网页支付开通流程
    解决 Qt5 报错 This application failed to start because it could not find or load the Qt platform plugin
    Linux 创建交换分区扩展虚拟内存
    Linux 逻辑卷管理LVM
    Linux的文件权限
  • 原文地址:https://www.cnblogs.com/sandynie/p/3137198.html
Copyright © 2020-2023  润新知