





















1
/*
2
* Created by SharpDevelop.
3
* User: XiaoCai
4
* Date: 2006-9-25
5
* Time: 10:05
6
*
7
* If you have anything,Please contact us;
8
*/
9
10
using System;
11
using System.Xml;
12
13
namespace BH.XmlClass
14
{
15
基本的XML数据对象类
87
88
/// <summary>
89
/// 数据操作类,只能对简单的xml数据表结构操作
90
/// XML文件原型:1、只有一个根结点。2、根结点可以带属性。
91
/// 3、子结点标识必须相同。4、子结点和孙结点都不带属性
92
/// </summary>
93
public class XmlOprator
94
{
95
/// <summary>
96
/// 添加一个新的XML结点
97
/// </summary>
98
/// <param name="vXmlItem">结点信息对象</param>
99
public void AddXml(XmlItem vXmlItem)
100
{
101
XmlDocument XmlDoc = new XmlDocument();
102
XmlDoc.Load(vXmlItem.XmlPath);
103
//
104
//TODO:查找根结点
105
//
106
XmlNode root = XmlDoc.SelectSingleNode(vXmlItem.RootNode);
107
if(vXmlItem.IsRootAttribute){
108
//添加根结点属性
109
XmlElement xe = (XmlElement)root;
110
for(int i=0;i < vXmlItem.RootAttribute.Length;i++){
111
xe.SetAttribute(vXmlItem.RootAttribute[i], vXmlItem.RootAttributeValue[i]);
112
}
113
//xe.SetAttribute("Date",vXmlItem.Date);
114
//xe.SetAttribute("Author",vXmlItem.Author);
115
//xe.SetAttribute("Description",vXmlItem.Description);
116
}
117
else
118
{
119
//添加根结点的子结点
120
XmlElement xe = XmlDoc.CreateElement(vXmlItem.ChildNode);
121
122
for(int i=0;i < vXmlItem.GrandsonNode.Length;i++){
123
XmlElement xeSub1 = XmlDoc.CreateElement(vXmlItem.GrandsonNode[i]);
124
xeSub1.InnerText = vXmlItem.GrandsonNodeValue[i];
125
xe.AppendChild(xeSub1);
126
}
127
128
/*//xe的第一个子结点
129
XmlElement xeSub1 = XmlDoc.CreateElement("Name");
130
xeSub1.InnerText = vXmlItem.Name;
131
xe.AppendChild(xeSub1);
132
//xe的第二个子结点
133
XmlElement xeSub2 = XmlDoc.CreateElement("Url");
134
xeSub2.InnerText = vXmlItem.Url;
135
xe.AppendChild(xeSub2);
136
//xe的第三个子结点
137
XmlElement xeSub3 = XmlDoc.CreateElement("Img");
138
xeSub3.InnerText = vXmlItem.Img;
139
xe.AppendChild(xeSub3);
140
//xe的第四个子结点
141
XmlElement xeSub4 = XmlDoc.CreateElement("Address");
142
xeSub4.InnerText = vXmlItem.Address;
143
xe.AppendChild(xeSub4);*/
144
145
root.AppendChild(xe);
146
XmlDoc.Save(vXmlItem.XmlPath);
147
}
148
}
149
150
/// <summary>
151
/// 编辑结点信息
152
/// </summary>
153
/// <param name="vXmlItem">要修改的结点信息对象</param>
154
/// <param name="Index">孙结点的索引</param>
155
/// <param name="WhereStr">和索引对应的条件</param>
156
public void EditXml(XmlItem vXmlItem,int Index,string WhereStr)
157
{
158
XmlDocument XmlDoc = new XmlDocument();
159
XmlDoc.Load(vXmlItem.XmlPath);
160
161
XmlNodeList xnl = XmlDoc.SelectSingleNode(vXmlItem.RootNode).ChildNodes;
162
foreach(XmlNode xn in xnl){
163
XmlElement xe = (XmlElement)xn;
164
if(xe.ChildNodes[Index].InnerText==WhereStr){
165
for(int i=0;i < vXmlItem.GrandsonNode.Length;i++){
166
xe.ChildNodes[i].InnerText = vXmlItem.GrandsonNodeValue[i];
167
}
168
/*xe.ChildNodes[0].InnerText = vXmlItem.Name;
169
xe.ChildNodes[1].InnerText = vXmlItem.Url;
170
xe.ChildNodes[2].InnerText = vXmlItem.Img;
171
xe.ChildNodes[3].InnerText = vXmlItem.Address;*/
172
}
173
}
174
XmlDoc.Save(vXmlItem.XmlPath);
175
}
176
177
/// <summary>
178
/// 删除XML指定结点,孙结点的索引作为条件
179
/// </summary>
180
/// <param name="vXmlItem">结点信息对象</param>
181
/// <param name="Index">孙结点的索引</param>
182
/// <param name="WhereStr">和索引对应的条件</param>
183
public void DeleteXml(XmlItem vXmlItem,int Index,string WhereStr)
184
{
185
XmlDocument XmlDoc = new XmlDocument();
186
XmlDoc.Load(vXmlItem.XmlPath);
187
188
XmlNodeList xnl = XmlDoc.SelectSingleNode(vXmlItem.RootNode).ChildNodes;
189
//按照孙结点的索引循环查找指定结点删除
190
foreach(XmlNode xn in xnl){
191
XmlElement xe = (XmlElement)xn;
192
if(xe.ChildNodes[Index].InnerText==WhereStr){
193
XmlDoc.SelectSingleNode(vXmlItem.RootNode).RemoveChild(xe);
194
}
195
}
196
XmlDoc.Save(vXmlItem.XmlPath);
197
}
198
199
public void DeleteXml(XmlItem vXI,string vGrandsonNode,string WhereStr){
200
XmlDocument XmlDoc = new XmlDocument();
201
XmlDoc.Load(vXI.XmlPath);
202
203
XmlNodeList xnl = XmlDoc.SelectSingleNode(vXI.RootNode).ChildNodes;
204
//按照孙结点的名称循环查找指定结点删除
205
foreach(XmlNode xn in xnl){
206
XmlElement xe = (XmlElement)xn;
207
if(xe.GetElementsByTagName(vGrandsonNode)[0].InnerText==WhereStr){
208
XmlDoc.SelectSingleNode(vXI.RootNode).RemoveChild(xe);
209
}
210
}
211
XmlDoc.Save(vXI.XmlPath);
212
}
213
}
214
}
215
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。