C# 操作xml(新建,添加,修改,删除)

<?xml version="1.0"?>
<root>
  <book isbn="111" id="1111">
    <title>C#</title>
  </book>
  <book isbn="222" id="2222">
    <title>F#</title>
  </book>
  <book isbn="333" id="3333">
    <title>B#</title>
  </book>
</root>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.IO;

namespace WindowsFormsApplication1
{    
   public class OutXml:IDisposable
    {
       public static readonly object obj = new object();
       public XmlDocument xmldoc=null;
       public OutXml()
       {
           if (xmldoc == null)
           {
               lock (obj)
               {
                   if (xmldoc == null)
                   {
                       xmldoc = new XmlDocument();
                       if (File.Exists(@"d:\book.xml"))
                       {
                           File.Delete(@"d:\book.xml");
                       }

                           //File.Create(@"d:\book.xml");

                           XmlDeclaration xd = xmldoc.CreateXmlDeclaration("1.0", null, null);
                           xmldoc.AppendChild(xd);
                           XmlElement newroot = xmldoc.CreateElement("root");
                           xmldoc.AppendChild(newroot);
                           xmldoc.Save(@"d:\book.xml");


                       xmldoc.Load(@"d:\book.xml");
                   }
               }
           }
       }

       //生成XML文件
       public void setXML()
       {
           XmlElement xe = xmldoc.CreateElement("book");
           xe.SetAttribute("isbn", "111");
           XmlAttribute xa = xmldoc.CreateAttribute("id");
           xa.Value = "1111";
           xe.SetAttributeNode(xa);
           XmlElement xe2 = xmldoc.CreateElement("title");
           xe2.InnerText = "C#";
           xe.AppendChild(xe2);
           xmldoc.DocumentElement.AppendChild(xe);

            xe = xmldoc.CreateElement("book");
           xe.SetAttribute("isbn", "222");
            xa = xmldoc.CreateAttribute("id");
           xa.Value = "2222";
           xe.SetAttributeNode(xa);
            xe2 = xmldoc.CreateElement("title");
           xe2.InnerText = "F#";
           xe.AppendChild(xe2);
           xmldoc.DocumentElement.AppendChild(xe);

           xmldoc.DocumentElement.AppendChild(xe.Clone());
           xmldoc.DocumentElement.AppendChild(xe.CloneNode(true));//拷贝xe的所有内容(当前和内部的xml)
           //xmldoc.DocumentElement.AppendChild(xe.CloneNode(false));//不拷贝xe的内部内容(只取得当前xml的相关属性,不取得内部xml
           xe = xmldoc.CreateElement("book");
           xe.SetAttribute("isbn", "333");
           xa = xmldoc.CreateAttribute("id");
           xa.Value = "3333";
           xe.SetAttributeNode(xa);
           xe2 = xmldoc.CreateElement("title");
           xe2.InnerText = "B#";
           xe.AppendChild(xe2);

           xmldoc.DocumentElement.AppendChild(xe);
           //XmlDeclaration

           

           XmlTextWriter tr = new XmlTextWriter(@"d:\book.xml", null);
           tr.Formatting = Formatting.Indented;
           xmldoc.WriteContentTo(tr);
           tr.Close();
        
       }

       // 读取xml文件
       public string readXML(string path)
       {
           string readcontent = string.Empty;
           XmlNodeList xnl = xmldoc.SelectNodes(path);
           foreach (XmlNode item in xnl)
           { 
               XmlElement xetemp = (XmlElement)item;
               readcontent += xetemp.FirstChild.InnerText +"\r\n";
           
           }

           return readcontent;
       }
       // 读取xml文件
       public string readAllXML(string path)
       {
           string readcontent = string.Empty;
           XmlNodeList xnl = xmldoc.SelectNodes(path);
           foreach (XmlNode item in xnl)
           {
               XmlElement xetemp = (XmlElement)item;
               readcontent += xetemp.OuterXml + "\r\n";
               //readcontent += item["title"].OuterXml + "\r\n";
               
               
           }

           return readcontent;
       }
       //添加xml
       public void AddXML(string path)
       {

           XmlNodeList xnl = xmldoc.SelectNodes(path);
           foreach (XmlNode item in xnl)
           {
               XmlElement xetemp = (XmlElement)item;
               if (xetemp.GetAttribute("Anthor") == "")
               {
                   xetemp.SetAttribute("Anthor", "randy");
               }
               if (xetemp.GetElementsByTagName("Price").Count <1)
               {
                   XmlElement price= xmldoc.CreateElement("price");
                   price.InnerText="100";
                   xetemp.AppendChild(price);
               }
           }


           xmldoc.Save(@"d:\book.xml");
       }

       //修改xml
       public void UpdateXML(string path)
       {

           XmlNodeList xnl = xmldoc.SelectNodes(path);
           foreach (XmlNode item in xnl)
           {
               XmlElement xe = (XmlElement)item;
               if (xe.GetAttribute("Anthor") != string.Empty)
               {
                   xe.SetAttribute("Anthor", "Pulisher");
               }
               if (xe.GetElementsByTagName("price").Count > 0)
               {
                   xe =(XmlElement)xe.SelectSingleNode("price");
                   xe.InnerText = "90";
                   
               }                   

           }


           xmldoc.Save(@"d:\book.xml");
       }

       public void DelXML(string path)
       {
           XmlNodeList xnl = xmldoc.SelectNodes(path);
           foreach (XmlNode item in xnl)
           {
               item.ParentNode.RemoveChild(item);
           }
           xmldoc.Save(@"d:\book.xml");
       }

       public void Dispose()
       {
           Dispose(true);
           GC.SuppressFinalize(this);
       
       }

       protected virtual void Dispose(bool disposing)
       {
           if (!m_disposed)
           {
               if (disposing)
               {
                   this.Dispose();  
                
               }
               m_disposed = true;
           
           }
       
       }
       ~OutXml()
       {
           Dispose(false);
       }
       private bool m_disposed;
    }
}



















   

你可能感兴趣的:(xml,object,String,C#,null,Path)