ASP.net(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 }
========================================================= 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();
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();