/// <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操作类)的更多相关文章

  1. C# 基础复习 三 XML操作

    XML 可扩展标记语言(所有标签都是自己定义,没有固定格式) 如果要给XML规定格式,可以使用dtd (dtd是什么?你不会自己百度吗) XML主要用来存储数据 XML的要求:     根节点只能有一 ...

  2. c# 操作临时数据---XML操作

    class Config { static string path; /// <summary> /// 配置文件的路径 /// </summary> public stati ...

  3. 【转】面试题:实现一个队列,这个队列除了有EnQueue, DeQueue操作,还有一个Max操作,三个操作复杂度都是O(1)

    1.每次  新元素进栈的时候,栈里面的元素需要排序 2.让最小的或者最大的元素位于栈顶,这样就可以在O(1)时间内获得最小或者最大的值了, ------ 3.上面的想法  不能保证,进栈(进了队列)之 ...

  4. C#操作xml完整类文件

    C#操作xml完整类文件 xml_oper.cs using ...System; using System.Data; using System.Web; using System.Xml; /** ...

  5. XML系列之--对电文格式XML的简单操作(三)

    前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...

  6. XML格式示例 与 XML操作(读取)类封装

    header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...

  7. 简单的XML操作类

    /// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...

  8. XML Helper XML操作类

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

  9. c# xml操作类 比较齐全

    using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...

随机推荐

  1. 如何使用VS2013对C++进行编程

    https://msdn.microsoft.com/zh-cn/library/bb384842.aspx

  2. 深入对比数据科学工具箱:Python和R之争

    建议:如果只是处理(小)数据的,用R.结果更可靠,速度可以接受,上手方便,多有现成的命令.程序可以用.要自己搞个算法.处理大数据.计算量大的,用python.开发效率高,一切尽在掌握. 概述 在真实的 ...

  3. iOS,Xcode7 制作Framework,含资源和界面

    Xcode7 制作Framework  本文通过Demo方式介绍1)将含bundle和存代码编写界面打包进framework:2)将storyboard +assets.xcassets打包. (一) ...

  4. C#带小括号的运算

    计算类的封装 jisuan.cs using System; using System.Collections.Generic; using System.Linq; using System.Tex ...

  5. Android ContentProvider 简单学习

    当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.以前我们学习过文件的操作模式,通过指定文件的操作模式为Context.MODE_WORL ...

  6. iOS - Git 代码版本管理

    1.Git Git 是用 C 语言开发的分布版本控制系统.版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态).另一个状态可以是不同的文件,也可以是不同的文件内容. ...

  7. ffmpeg从AVFrame取出yuv数据到保存到char*中

    ffmpeg从AVFrame取出yuv数据到保存到char*中   很多人一直不知道怎么利用ffmpeg从AVFrame取出yuv数据到保存到char*中,下面代码将yuv420p和yuv422p的数 ...

  8. 数据库 基础篇3(mysql语法)

    4 数据库管理(接上篇) 4.1 查询所有数据库 mysql> show databases; +--------------------+ | Database           | +-- ...

  9. CentOS7 增加tomcat 启动,停止,使用systemctl进行配置

    1,centos7 使用 systemctl 替换了 service命令 参考:redhat文档: https://access.redhat.com/documentation/en-US/Red_ ...

  10. TOSHIBA TEC EXT Printer Z-Mode

    Z-Mode functionality automatically converts the Zebra data stream into a TOSHIBA data stream (TPCL). ...