您的位置:首页 > 编程语言 > C#

C#XML操作类(修改)[转]

2008-05-05 23:04 453 查看
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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: