zoukankan      html  css  js  c++  java
  • C#XML操作类(修改)[转]

      1  public class XmlUtility
      2     {
      3         protected string strXmlFile;
      4         protected XmlDocument objXmlDoc = new XmlDocument();
      5 
      6         public XmlUtility(string XmlFile)
      7         {
      8             try
      9             {
     10                 if (!File.Exists(XmlFile))
     11                 {
     12                     CreatXmlFile(XmlFile);
     13                 }
     14                 objXmlDoc.Load(XmlFile);
     15 
     16             }
     17             catch (System.Exception ex)
     18             {
     19                 throw ex;
     20             }
     21             strXmlFile = XmlFile;
     22         }
     23         protected void CreatXmlFile(string file)
     24         {
     25             XmlTextWriter writer = new
     26             XmlTextWriter(file, Encoding.UTF8);
     27 
     28             // start writing!
     29             writer.WriteStartDocument();
     30             writer.WriteStartElement("Root");
     31             writer.WriteEndElement();
     32             writer.WriteEndDocument();
     33             writer.Close();
     34         }
     35         /// <summary>
     36         /// 查找数据。返回一个DataSet 多条 
     37         /// </summary>
     38         /// <param name="XmlPathNode">结点路径</param>
     39         /// <returns></returns>
     40         public DataSet GetData(string XmlPathNode)
     41         {
     42             //查找数据。返回一个DataSet 
     43             DataSet ds = new DataSet();
     44             //=========多个=================
     45             foreach(XmlNode xmlnode in objXmlDoc.SelectNodes(XmlPathNode))
     46             {
     47                 StringReader read = new StringReader(xmlnode.OuterXml);
     48                 ds.ReadXml(read);
     49             }
     50             //==============================
     51             return ds;
     52         }
     53         /// <summary>
     54         /// 查找数据。返回一个DataSet 单条
     55         /// </summary>
     56         /// <param name="XmlPathNode"></param>
     57         /// <returns></returns>
     58         public DataSet GetDataSingle(string XmlPathNode)
     59         {
     60             //查找数据。返回一个DataSet 
     61             DataSet ds = new DataSet();
     62             //==========单个================
     63             StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
     64             ds.ReadXml(read);
     65             //==============================
     66             return ds;
     67         }
     68         /// <summary>
     69         /// 更新节点内容
     70         /// </summary>
     71         /// <param name="XmlPathNode"></param>
     72         /// <param name="Content"></param>
     73         public void Replace(string XmlPathNode, string Content)
     74         {
     75             //更新节点内容。 
     76             objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content;
     77         }
     78         /// <summary>
     79         /// 删除一个节点
     80         /// </summary>
     81         /// <param name="Node"></param>
     82         public void Delete(string Node)
     83         {
     84             //删除一个节点。 
     85             string mainNode = Node.Substring(0, Node.LastIndexOf("/"));
     86             objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
     87         }
     88         /// <summary>
     89         /// 插入一个节点和此节点的一子节点
     90         /// </summary>
     91         /// <param name="MainNode"></param>
     92         /// <param name="ChildNode"></param>
     93         /// <param name="Element"></param>
     94         /// <param name="Content"></param>
     95         public void InsertNode(string MainNode, string ChildNode, string Element, string Content)
     96         {
     97             //插入一个节点和此节点的一子节点。 
     98             XmlNode objRootNode = objXmlDoc.SelectSingleNode(MainNode);
     99             XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
    100             objRootNode.AppendChild(objChildNode);
    101             XmlElement objElement = objXmlDoc.CreateElement(Element);
    102             objElement.InnerText = Content;
    103             objChildNode.AppendChild(objElement);
    104         }
    105         /// <summary>
    106         /// 插入一个节点,带一属性
    107         /// </summary>
    108         /// <param name="MainNode"></param>
    109         /// <param name="Element"></param>
    110         /// <param name="Attrib"></param>
    111         /// <param name="AttribContent"></param>
    112         /// <param name="Content"></param>
    113         public void InsertElement(string MainNode, string Element, string Attrib, string AttribContent, string Content)
    114         {
    115             //插入一个节点,带一属性。 
    116             XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
    117             XmlElement objElement = objXmlDoc.CreateElement(Element);
    118             objElement.SetAttribute(Attrib, AttribContent);
    119             objElement.InnerText = Content;
    120             objNode.AppendChild(objElement);
    121         }
    122         /// <summary>
    123         /// 插入一个节点,不带属性
    124         /// </summary>
    125         /// <param name="MainNode"></param>
    126         /// <param name="Element"></param>
    127         /// <param name="Content"></param>
    128         public void InsertElement(string MainNode, string Element, string Content)
    129         {
    130             XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
    131             XmlElement objElement = objXmlDoc.CreateElement(Element);
    132             objElement.InnerText = Content;
    133             objNode.AppendChild(objElement);
    134         }
    135         /// <summary>
    136         /// 保存文件
    137         /// </summary>
    138         public void Save()
    139         {
    140             //保存文件。 
    141             try
    142             {
    143                 objXmlDoc.Save(strXmlFile);
    144             }
    145             catch (System.Exception ex)
    146             {
    147                 throw ex;
    148             }
    149             objXmlDoc = null;
    150         }
    151     }
    =========================================================

    实例应用:

    string strXmlFile = Server.MapPath("TestXml.xml");
    XmlControl xmlTool 
    = new XmlControl(strXmlFile);

    // 数据显示 条件:节点BID=1所有数据
    // dgList.DataSource = xmlTool.GetData("Book/Authors[BID=\"1\"]").Tables[0];;
    // dgList.DataBind();

    // 更新元素內容 条件:节点BID=2
    // xmlTool.Replace("Book/Authors[BID=\"2\"]/Content","ppppppp");
    // xmlTool.Save();

    // 添加一个新节点 条件:节点BID=4
    // xmlTool.InsertNode("Book","Author","BID","4");
    // xmlTool.InsertElement("Book/Author[BID=\"4\"]","Content","aaaaaaaaa");
    // xmlTool.InsertElement("Book/Author[BID=\"4\"]","Title","Sex","man","iiiiiiii");
    // xmlTool.Save();

    // 删除一个指定节点的所有內容和属性 条件:节点BID=4
    // xmlTool.Delete("Book/Author[BID=\"4\"]");
    // xmlTool.Save();

    // 删除一个指定节点的子节点 条件:节点BID内容为4
    // xmlTool.Delete("Book/Authors[BID=\"4\"]");
    // xmlTool.Save();

    // 删除一个指定节点的子节点 条件:节点AuthorsBID的属性Booktype=9
    // xmlTool.Delete("Book/Authors[@Booktype=\"9\"]");
    // xmlTool.Save();
  • 相关阅读:
    Groovy 设计模式 -- null对象模式
    Groovy 设计模式 -- 借贷
    Groovy 设计模式 -- 抽象工厂 模式
    Groovy 设计模式 -- Strategy 模式
    Groovy 设计模式 -- proxy & delegate
    Groovy 类名称赋值为变量使用(newInstance & new)
    yaml
    REST POST PUT差别
    Continuous Design
    通配符 Globbing赏析
  • 原文地址:https://www.cnblogs.com/ok519/p/1184189.html
Copyright © 2011-2022 走看看