C#常用操作类库三(XML操作类)
/// <summary>
/// XmlHelper 的摘要说明。
/// xml操作类
/// </summary>
public class XmlHelper
{
protected string strXmlFile;
protected XmlDocument objXmlDoc = new XmlDocument(); public XmlHelper(string XmlFile)
{
//
// TODO: 在这里加入建构函式的程序代码
//
try
{ objXmlDoc.Load(XmlFile);
}
catch (System.Exception ex)
{
throw ex;
}
strXmlFile = XmlFile;
} public DataTable GetData(string XmlPathNode)
{
//查找数据。返回一个DataView
DataSet ds = new DataSet();
StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
ds.ReadXml(read);
return ds.Tables[];
}
/// <summary>
/// 新节点内容。
/// 示例:xmlTool.Replace("Book/Authors[ISBN=\"0002\"]/Content","ppppppp");
/// </summary>
/// <param name="XmlPathNode"></param>
/// <param name="Content"></param>
public void Replace(string XmlPathNode, string Content)
{
//更新节点内容。
objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content;
} /// <summary>
/// 删除一个指定节点的子节点。
/// 示例: xmlTool.DeleteChild("Book/Authors[ISBN=\"0003\"]");
/// </summary>
/// <param name="Node"></param>
public void DeleteChild(string Node)
{
//删除一个节点。
string mainNode = Node.Substring(, Node.LastIndexOf("/"));
objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
} /// <summary> /// * 使用示列:
/// 示例: XmlHelper.Delete( "/Node", "")
/// XmlHelper.Delete( "/Node", "Attribute")
/// </summary>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param>
public void Delete( string node, string attribute)
{
try
{ XmlNode xn = objXmlDoc.SelectSingleNode(node);
XmlElement xe = (XmlElement)xn;
if (attribute.Equals(""))
xn.ParentNode.RemoveChild(xn);
else
xe.RemoveAttribute(attribute); }
catch { }
} /// <summary>
/// 插入一节点和此节点的一子节点。
/// 示例:xmlTool.InsertNode("Book","Author","ISBN","0004");
/// </summary>
/// <param name="MainNode">主节点</param>
/// <param name="ChildNode">子节点</param>
/// <param name="Element">元素</param>
/// <param name="Content">内容</param>
public void InsertNode(string MainNode, string ChildNode, string Element, string Content)
{
//插入一节点和此节点的一子节点。
XmlNode objRootNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
objRootNode.AppendChild(objChildNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.InnerText = Content;
objChildNode.AppendChild(objElement);
} /// <summary>
/// 插入一个节点,带一属性。
/// 示例: xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Title","Sex","man","iiiiiiii");
/// </summary>
/// <param name="MainNode">主节点</param>
/// <param name="Element">元素</param>
/// <param name="Attrib">属性</param>
/// <param name="AttribContent">属性内容</param>
/// <param name="Content">元素内容</param>
public void InsertElement(string MainNode, string Element, string Attrib, string AttribContent, string Content)
{
//插入一个节点,带一属性。
XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.SetAttribute(Attrib, AttribContent);
objElement.InnerText = Content;
objNode.AppendChild(objElement);
}
/// <summary>
/// 插入一个节点,不带属性。
/// 示例:xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Content","aaaaaaaaa");
/// </summary>
/// <param name="MainNode">主节点</param>
/// <param name="Element">元素</param>
/// <param name="Content">元素内容</param>
public void InsertElement(string MainNode, string Element, string Content)
{
//插入一个节点,不带属性。
XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.InnerText = Content;
objNode.AppendChild(objElement);
} /// <summary>
/// 对xml文件做插入,更新,删除后需做Save()操作,以保存修改
/// </summary>
public void Save()
{
//保存文檔。
try
{
objXmlDoc.Save(strXmlFile);
}
catch (System.Exception ex)
{
throw ex;
}
objXmlDoc = null;
}
} //========================================================= //实例应用: //string strXmlFile = Server.MapPath("TestXml.xml");
//XmlControl xmlTool = new XmlControl(strXmlFile); // 数据显视
// dgList.DataSource = xmlTool.GetData("Book/Authors[ISBN=\"0002\"]");
// dgList.DataBind(); // 更新元素内容
// xmlTool.Replace("Book/Authors[ISBN=\"0002\"]/Content","ppppppp");
// xmlTool.Save(); // 添加一个新节点
// xmlTool.InsertNode("Book","Author","ISBN","0004");
// xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Content","aaaaaaaaa");
// xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Title","Sex","man","iiiiiiii");
// xmlTool.Save(); // 删除一个指定节点的所有内容和属性
// xmlTool.Delete("Book/Author[ISBN=\"0004\"]");
// xmlTool.Save(); // 删除一个指定节点的子节点
// xmlTool.Delete("Book/Authors[ISBN=\"0003\"]");
// xmlTool.Save();
C#常用操作类库三(XML操作类)的更多相关文章
- C# 基础复习 三 XML操作
XML 可扩展标记语言(所有标签都是自己定义,没有固定格式) 如果要给XML规定格式,可以使用dtd (dtd是什么?你不会自己百度吗) XML主要用来存储数据 XML的要求: 根节点只能有一 ...
- c# 操作临时数据---XML操作
class Config { static string path; /// <summary> /// 配置文件的路径 /// </summary> public stati ...
- 【转】面试题:实现一个队列,这个队列除了有EnQueue, DeQueue操作,还有一个Max操作,三个操作复杂度都是O(1)
1.每次 新元素进栈的时候,栈里面的元素需要排序 2.让最小的或者最大的元素位于栈顶,这样就可以在O(1)时间内获得最小或者最大的值了, ------ 3.上面的想法 不能保证,进栈(进了队列)之 ...
- C#操作xml完整类文件
C#操作xml完整类文件 xml_oper.cs using ...System; using System.Data; using System.Web; using System.Xml; /** ...
- XML系列之--对电文格式XML的简单操作(三)
前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...
- XML格式示例 与 XML操作(读取)类封装
header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...
- 简单的XML操作类
/// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...
- XML Helper XML操作类
写的一个XML操作类,包括读取/插入/修改/删除. using System;using System.Data;using System.Configuration;using System.Web ...
- c# xml操作类 比较齐全
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...
随机推荐
- Android SQLite数据库使用
在Android开发中SQLite起着很重要的作用,网上SQLite的教程有很多很多,不过那些教程大多数都讲得不是很全面.本人总结了一些SQLite的常用的方法,借着论坛的大赛,跟大家分享分享的.一. ...
- python异常和错误(syntax errors 和 exceptions)
语法错误 语法错误又被称解析错误 >>> for i in range(1..10):print(i) File "<stdin>", line 1 ...
- treegrid and datagrid ctrl or shift selectRow
var tg = $('#tg');tg.treegrid({...}); // create treegridvar panel = tg.treegrid('getPanel');var body ...
- [问题2014S14] 解答
[问题2014S14] 解答 首先, 满足条件的 \(\varphi\) 的全体特征值都为零. 事实上, 任取 \(\varphi\) 的特征值 \(\lambda\), 对应的特征向量为 \(0\ ...
- 赤红血OL
包含海量的PSD文档!!全PSD源文档-446M.你值得拥有! <ignore_js_op> <ignore_js_op> <ignore_js_op> <i ...
- docker图形界面工具
好久不打开docker运行环境,执行命令出现下面的情况 bgddeMBP:~ bgd$ sudo docker info Cannot connect to the Docker daemon. Is ...
- Sealed密封类
using System; using System.Collections.Generic; using System.Linq; using System.Text; #region 概述 //在 ...
- transition&transform,CSS中过度和变形的设置
设置样式的过度效果transition-property: none/all; transition-duration:2s;运动时间,默认是0秒 transition-delay:0s; 延迟时间默 ...
- CAD迷你看图
CAD迷你看图http://www.aec188.com/CAD迷你看图 2016R12超快.超小的CAD多功能看图工具,完全脱离AutoCAD浏览R14-R2016各版本DWG/DXF/DWF的二三 ...
- MySQL学习笔记--基本操作
1.登录数据库 在命令行输入 "mysql -u username -p" 回车后输入密码 2.选择数据库 USE datebase name,选择要操作的数据库 3.显示所有数据 ...