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最简便。杠杠地

转载于:https://www.cnblogs.com/sandynie/archive/2013/06/15/3137198.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值