zoukankan      html  css  js  c++  java
  • 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最简便。杠杠地

  • 相关阅读:
    LCA算法总结
    【福利】论机房如何关闭方正软件保护卡
    codevs 2190 有理逼近
    用C语言的rand()和srand()产生伪随机数的方法总结
    float,double等精度丢失问题 float,double内存表示
    #incldue<cctype>函数系列
    poj 2348 Euclid's Game 题解
    poj 2240 Arbitrage 题解
    洛谷 p1352 没有上司的舞会 题解
    BZOJ 1093 最大半连通子图 题解
  • 原文地址:https://www.cnblogs.com/sandynie/p/3137198.html
Copyright © 2011-2022 走看看