写的一个XML操作类,包括读取/插入/修改/删除。转自:http://blog.163.com/sc_g_ruan/blog/static/15032602011510105333868/
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
namespace PuTianCheng
{
/// <summary>
/// XmlHelper 的摘要说明
/// </summary>
public class XmlHelper
{
public XmlHelper()
{
}
/// <summary>
/// 读取数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时返回该属性值,否则返回串联值</param>
/// <returns>string</returns>
/**************************************************
* 使用示列:
* XmlHelper.Read(path, "/Node", "")
* XmlHelper.Read(path, "/Node/Element[@Attribute='Name']", "Attribute")
************************************************/
public static string Read(string path, string node, string attribute)
{
string value = "";
try
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
value = (attribute.Equals("") ? xn.InnerText : xn.Attributes[attribute].Value);
}
catch { }
return value;
}
/// <summary>
/// 插入数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="element">元素名,非空时插入新元素,否则在该元素中插入属性</param>
/// <param name="attribute">属性名,非空时插入该元素属性值,否则插入元素值</param>
/// <param name="value">值</param>
/// <returns></returns>
/**************************************************
* 使用示列:
* XmlHelper.Insert(path, "/Node", "Element", "", "Value")
* XmlHelper.Insert(path, "/Node", "Element", "Attribute", "Value")
* XmlHelper.Insert(path, "/Node", "", "Attribute", "Value")
************************************************/
public static void Insert(string path, string node, string element, string attribute, string value)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
if (element.Equals(""))
{
if (!attribute.Equals(""))
{
XmlElement xe = (XmlElement)xn;
xe.SetAttribute(attribute, value);
}
}
else
{
XmlElement xe = doc.CreateElement(element);
if (attribute.Equals(""))
xe.InnerText = value;
else
xe.SetAttribute(attribute, value);
xn.AppendChild(xe);
}
doc.Save(path);
}
catch { }
}
/// <summary>
/// 修改数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时修改该节点属性值,否则修改节点值</param>
/// <param name="value">值</param>
/// <returns></returns>
/**************************************************
* 使用示列:
* XmlHelper.Insert(path, "/Node", "", "Value")
* XmlHelper.Insert(path, "/Node", "Attribute", "Value")
************************************************/
public static void Update(string path, string node, string attribute, string value)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
XmlElement xe = (XmlElement)xn;
if (attribute.Equals(""))
xe.InnerText = value;
else
xe.SetAttribute(attribute, value);
doc.Save(path);
}
catch { }
}
/// <summary>
/// 删除数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param>
/// <param name="value">值</param>
/// <returns></returns>
/**************************************************
* 使用示列:
* XmlHelper.Delete(path, "/Node", "")
* XmlHelper.Delete(path, "/Node", "Attribute")
************************************************/
public static void Delete(string path, string node, string attribute)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
XmlElement xe = (XmlElement)xn;
if (attribute.Equals(""))
xn.ParentNode.RemoveChild(xn);
else
xe.RemoveAttribute(attribute);
doc.Save(path);
}
catch { }
}
}
}

==================================================

XmlFile.xml:
<?xml version="1.0" encoding="utf-8"?>
<Root />

==================================================

使用方法:

string xml = Server.MapPath("XmlFile.xml");
//插入元素
//XmlHelper.Insert(xml, "/Root", "Studio", "", "");
//插入元素/属性
//XmlHelper.Insert(xml, "/Root/Studio", "Site", "Name", "小路工作室");
//XmlHelper.Insert(xml, "/Root/Studio", "Site", "Name", "丁香鱼工作室");
//XmlHelper.Insert(xml, "/Root/Studio", "Site", "Name", "谱天城工作室");
//XmlHelper.Insert(xml, "/Root/Studio/Site[@Name='谱天城工作室']", "Master", "", "红尘静思");
//插入属性
//XmlHelper.Insert(xml, "/Root/Studio/Site[@Name='小路工作室']", "", "Url", http://www.jecda.com);
//XmlHelper.Insert(xml, "/Root/Studio/Site[@Name='丁香鱼工作室']", "", "Url", http://www.jecda.com);
//XmlHelper.Insert(xml, "/Root/Studio/Site[@Name='谱天城工作室']", "", "Url", http://www.jecda.com);
//修改元素值
//XmlHelper.Update(xml, "/Root/Studio/Site[@Name='谱天城工作室']/Master", "", "RedDust");
//修改属性值
//XmlHelper.Update(xml, "/Root/Studio/Site[@Name='谱天城工作室']", "Url", http://www.jecda.com);
//XmlHelper.Update(xml, "/Root/Studio/Site[@Name='谱天城工作室']", "Name", "PuTianCheng Studio");
//读取元素值
//Response.Write("<div>" + XmlHelper.Read(xml, "/Root/Studio/Site/Master", "") + "</div>");
//读取属性值
//Response.Write("<div>" + XmlHelper.Read(xml, "/Root/Studio/Site", "Url") + "</div>");
//读取特定属性值
//Response.Write("<div>" + XmlHelper.Read(xml, "/Root/Studio/Site[@Name='丁香鱼工作室']", "Url") + "</div>");
//删除属性
//XmlHelper.Delete(xml, "/Root/Studio/Site[@Name='小路工作室']", "Url");
//删除元素
//XmlHelper.Delete(xml, "/Root/Studio", "");

<?xml version="1.0" encoding="UTF-8"?>
<config>
<prop key="allServiceOnOneServer" value="true" type="Boolean" />
<prop key="backgroundMapUrl" value="http://%hostname%:8081/ArcGIS/rest/services/DPMRasterMap/MapServer" type="String" />
<prop key="videoMapUrl" value="http://%hostname%:8081/ArcGIS/rest/services/DPM_Map_Ags/MapServer" type="String" />
<prop key="queryMapUrl" value="http://%hostname%:8081/ArcGIS/rest/services/DPM_Map_Ags/MapServer" type="String" />
<prop key="fmsurl" value="11111111111" type="String" />
<prop key="wsdlurl" value="http://%hostname%:8080/DPMService.asmx?WSDL" type="String" />
 <prop key="dpmdatadir" value="http://%hostname%:8083/dpmdata/CQ_ALL/xml" type="String" />
</config>

像这种有多个节点名称相同的,调用参数应该这么写:

string dir = XmlHelper.Read(file, "config/prop[@key='dpmdatadir']", "value");

通过"config/prop[@key='dpmdatadir']"就可以直接定位到想要的节点,感觉好爽

XML Helper XML操作类相关推荐

  1. opencv中xml/yml文件操作类

    opencv有关xml/yml/json帮助文档:opencv 下面是官方给出的一个示例,通过使用和修改来学习这方面的知识吧. 可以看到这个 创建一个新的VS工程,把代码复制进去,配置好opencv ...

  2. 关于XML文档操作类

    1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 usin ...

  3. 用友华表Cell控件数据 xml 构造器的操作类

    using System; using System.Collections; using System.Data; using System.Xml; /// <summary>     ...

  4. android xml文件操作类,android操作xml

    android操作xml封装后的类,包括创建xml和读xml. public class XmlParserUtil { //创建xml文件 public static void createXmlF ...

  5. 仿Jquery链式操作的xml操作类

    经常需要对xml文件进行操作,参考了Jquery的链式操作后实现了xmlHelper类. 代码 using System; using System.Data; using System.Config ...

  6. php操作xml类,PHP实现的XML操作类【XML Library】

    本文实例讲述了PHP实现的XML操作类.分享给大家供大家参考,具体如下: 这是一个接口程序,需要大量分析解析XML,PHP的xml_parse_into_struct()函数不能直接生成便于使用的数组 ...

  7. C#:XML操作类--转

    写的一个XML操作类,包括读取/插入/修改/删除. using System; using System.Data; using System.Configuration; using System. ...

  8. C++ XML操作类

    C++ XML操作类 转载自:http://beself.top/2019/03/03/c-xml%E6%93%8D%E4%BD%9C%E7%B1%BB/ gitee源码:https://gitee. ...

  9. C#:XML操作类 (转)

    写的一个XML操作类,包括读取/插入/修改/删除. using System; using System.Data; using System.Configuration; using System. ...

最新文章

  1. 迭代求斐波那契数列python_python中的迭代器(以斐波那契数列为主讲解)
  2. sql 语言中 when case 用法
  3. html四边形的的框怎么编写,html知识点之利用css四边形切角并且加上边框
  4. vue路由跳转动画_Vue路由跳转动画
  5. hihoCoder #1162 : 骨牌覆盖问题·三 (矩阵快速幂,DP)
  6. pandas 链接数据库
  7. security工作笔记009---spring security BCryptPasswordEncoder加密解密,不错的随机盐,不错的加密解密方法
  8. android 360状态栏显示,Android高仿UC浏览器和360手机卫士消息常驻栏(通知栏)
  9. Linux服务器傻瓜安装(图解下)(4)
  10. MYSQL数据库优化的八种方式
  11. 为什么录像总是很暗_为什么拍出的的照片总是很暗?看下是不是这2个原因造成的...
  12. 国际象棋“马”的走法
  13. [K8S] PV动态供给
  14. Javadoc 使用详解
  15. BAT文件执行输出中文乱码
  16. 解决K8S节点NotReady状态
  17. 附晋级总决赛名单(二) | 云上竞技,本周精彩继续
  18. 扬帆跨境电商:Shopify放量5000W扩大规模
  19. 微信小程序踩坑之旅(三):不同机型布局适配问题(rpx,px,vh,vw)
  20. 被取代的ERP?EBC正在用业务数字化让管理出效益

热门文章

  1. 一文搞懂SCI、EI、ISTP、SSCI、INSPEC、SCIE、IEEE、CSCD、CSSCI
  2. 接收不到雅虎验证码_必应受到微软和雅虎交易的推动
  3. arcgis两张图层不能同时显示_如何在ArcGIS中合并两个“不兼容”的多边形图层?...
  4. 哨兵数据下载对应的精密轨道文件
  5. 学习笔记:Ajax和jQuery
  6. Python第十四日
  7. NOI-1.5(08) 多边形内角和
  8. STM32/51单片机实训day6(一)——Proteus8.6版本+STM32F103驱动LCD12864显示|Keil5单片机程序设计
  9. 使用IO流将数据库中数据生成一个文件,结果使用Notepad++打开部分数据结尾出现NUL...
  10. Nutanix推出超融合软件创新功能,强化市场领导地位