在C#.net中如何操作XML

来源:互联网 发布:帝国cms投稿样式 编辑:程序博客网 时间:2024/06/05 17:00
  1. 2需要添加的命名空间:
  2.   3using System.Xml;
  3.   4
  4.   5定义几个公共对象:
  5.   6XmlDocument xmldoc ;
  6.   7XmlNode xmlnode ;
  7.   8XmlElement xmlelem ;
  8.   9
  9.  101,创建到服务器同名目录下的xml文件:
  10.  11
  11.  12
  12.  13方法一:
  13.  14xmldoc = new XmlDocument ( ) ;
  14.  15//加入XML的声明段落
  15.  16xmlnode = xmldoc.CreateNode ( XmlNodeType.XmlDeclaration , "" , "" ) ;
  16.  17xmldoc.AppendChild ( xmlnode ) ;
  17.  18//加入一个根元素
  18.  19xmlelem = xmldoc.CreateElement ( "" , "Employees" , "" ) ;
  19.  20xmldoc.AppendChild ( xmlelem ) ;
  20.  21//加入另外一个元素
  21.  22for(int i=1;i<3;i++)
  22.  23{
  23.  24
  24.  25XmlNode root=xmldoc.SelectSingleNode("Employees");//查找<Employees> 
  25.  26XmlElement xe1=xmldoc.CreateElement("Node");//创建一个<Node>节点 
  26.  27xe1.SetAttribute("genre","李赞红");//设置该节点genre属性 
  27.  28xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性 
  28.  29
  29.  30XmlElement xesub1=xmldoc.CreateElement("title"); 
  30.  31xesub1.InnerText="CS从入门到精通";//设置文本节点 
  31.  32xe1.AppendChild(xesub1);//添加到<Node>节点中 
  32.  33XmlElement xesub2=xmldoc.CreateElement("author"); 
  33.  34xesub2.InnerText="候捷"
  34.  35xe1.AppendChild(xesub2); 
  35.  36XmlElement xesub3=xmldoc.CreateElement("price"); 
  36.  37xesub3.InnerText="58.3"
  37.  38xe1.AppendChild(xesub3); 
  38.  39
  39.  40root.AppendChild(xe1);//添加到<Employees>节点中 
  40.  41}
  41.  42//保存创建好的XML文档
  42.  43xmldoc.Save ( Server.MapPath("data.xml") ) ; 
  43.  44
  44.  45/**///////////////////////////////////////////////////////////////////////////////////////
  45.  46结果:在同名目录下生成了名为data.xml的文件,内容如下,
  46.  47<?xml version="1.0"?>
  47.  48<Employees>
  48.  49  <Node genre="李赞红" ISBN="2-3631-4">
  49.  50    <title>CS从入门到精通</title>
  50.  51    <author>候捷</author>
  51.  52    <price>58.3</price>
  52.  53  </Node>
  53.  54  <Node genre="李赞红" ISBN="2-3631-4">
  54.  55    <title>CS从入门到精通</title>
  55.  56    <author>候捷</author>
  56.  57    <price>58.3</price>
  57.  58  </Node>
  58.  59</Employees>
  59.  60
  60.  61
  61.  62方法二:
  62.  63XmlTextWriter xmlWriter;
  63.  64   string strFilename = Server.MapPath("data1.xml") ;
  64.  65
  65.  66   xmlWriter = new XmlTextWriter(strFilename,Encoding.Default);//创建一个xml文档
  66.  67   xmlWriter.Formatting = Formatting.Indented;
  67.  68   xmlWriter.WriteStartDocument();
  68.  69   xmlWriter.WriteStartElement("Employees");
  69.  70
  70.  71   xmlWriter.WriteStartElement("Node");
  71.  72   xmlWriter.WriteAttributeString("genre","李赞红");
  72.  73   xmlWriter.WriteAttributeString("ISBN","2-3631-4");
  73.  74
  74.  75   xmlWriter.WriteStartElement("title");
  75.  76   xmlWriter.WriteString("CS从入门到精通");
  76.  77   xmlWriter.WriteEndElement();
  77.  78
  78.  79   xmlWriter.WriteStartElement("author");
  79.  80   xmlWriter.WriteString("候捷");
  80.  81   xmlWriter.WriteEndElement();
  81.  82
  82.  83   xmlWriter.WriteStartElement("price");
  83.  84   xmlWriter.WriteString("58.3");
  84.  85   xmlWriter.WriteEndElement();
  85.  86
  86.  87   xmlWriter.WriteEndElement();
  87.  88
  88.  89   xmlWriter.Close();
  89.  90/**///////////////////////////////////////////////////////////////////////////////////////
  90.  91结果:
  91.  92<?xml version="1.0" encoding="gb2312"?>
  92.  93<Employees>
  93.  94  <Node genre="李赞红" ISBN="2-3631-4">
  94.  95    <title>CS从入门到精通</title>
  95.  96    <author>候捷</author>
  96.  97    <price>58.3</price>
  97.  98  </Node>
  98.  99</Employees>
  99. 100
  100. 1012,添加一个结点:
  101. 102
  102. 103XmlDocument xmlDoc=new XmlDocument(); 
  103. 104xmlDoc.Load(Server.MapPath("data.xml")); 
  104. 105XmlNode root=xmlDoc.SelectSingleNode("Employees");//查找<Employees> 
  105. 106XmlElement xe1=xmlDoc.CreateElement("Node");//创建一个<Node>节点 
  106. 107xe1.SetAttribute("genre","张三");//设置该节点genre属性 
  107. 108xe1.SetAttribute("ISBN","1-1111-1");//设置该节点ISBN属性 
  108. 109
  109. 110XmlElement xesub1=xmlDoc.CreateElement("title"); 
  110. 111xesub1.InnerText="C#入门帮助";//设置文本节点 
  111. 112xe1.AppendChild(xesub1);//添加到<Node>节点中 
  112. 113XmlElement xesub2=xmlDoc.CreateElement("author"); 
  113. 114xesub2.InnerText="高手"
  114. 115xe1.AppendChild(xesub2); 
  115. 116XmlElement xesub3=xmlDoc.CreateElement("price"); 
  116. 117xesub3.InnerText="158.3"
  117. 118xe1.AppendChild(xesub3); 
  118. 119
  119. 120root.AppendChild(xe1);//添加到<Employees>节点中 
  120. 121xmlDoc.Save ( Server.MapPath("data.xml") );
  121. 122
  122. 123/**///////////////////////////////////////////////////////////////////////////////////////
  123. 124结果:在xml原有的内容里添加了一个结点,内容如下,
  124. 125<?xml version="1.0"?>
  125. 126<Employees>
  126. 127  <Node genre="李赞红" ISBN="2-3631-4">
  127. 128    <title>CS从入门到精通</title>
  128. 129    <author>候捷</author>
  129. 130    <price>58.3</price>
  130. 131  </Node>
  131. 132  <Node genre="李赞红" ISBN="2-3631-4">
  132. 133    <title>CS从入门到精通</title>
  133. 134    <author>候捷</author>
  134. 135    <price>58.3</price>
  135. 136  </Node>
  136. 137  <Node genre="张三" ISBN="1-1111-1">
  137. 138    <title>C#入门帮助</title>
  138. 139    <author>高手</author>
  139. 140    <price>158.3</price>
  140. 141  </Node>
  141. 142</Employees>
  142. 143
  143. 1443,修改结点的值(属性和子结点):
  144. 145
  145. 146XmlDocument xmlDoc=new XmlDocument(); 
  146. 147xmlDoc.Load( Server.MapPath("data.xml") ); 
  147. 148
  148. 149XmlNodeList nodeList=xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点 
  149. 150
  150. 151foreach(XmlNode xn in nodeList)//遍历所有子节点 
  151. 152{ 
  152. 153XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型 
  153. 154if(xe.GetAttribute("genre")=="张三")//如果genre属性值为“张三” 
  154. 155{ 
  155. 156xe.SetAttribute("genre","update张三");//则修改该属性为“update张三” 
  156. 157
  157. 158XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点 
  158. 159foreach(XmlNode xn1 in nls)//遍历 
  159. 160{ 
  160. 161XmlElement xe2=(XmlElement)xn1;//转换类型 
  161. 162if(xe2.Name=="author")//如果找到 
  162. 163{ 
  163. 164xe2.InnerText="亚胜";//则修改
  164. 165} 
  165. 166} 
  166. 167} 
  167. 168} 
  168. 169xmlDoc.Save( Server.MapPath("data.xml") );//保存。
  169. 170
  170. 171/**///////////////////////////////////////////////////////////////////////////////////////
  171. 172结果:将原来的所有结点的信息都修改了,xml的内容如下,
  172. 173<?xml version="1.0"?>
  173. 174<Employees>
  174. 175  <Node genre="李赞红" ISBN="2-3631-4">
  175. 176    <title>CS从入门到精通</title>
  176. 177    <author>候捷</author>
  177. 178    <price>58.3</price>
  178. 179  </Node>
  179. 180  <Node genre="李赞红" ISBN="2-3631-4">
  180. 181    <title>CS从入门到精通</title>
  181. 182    <author>候捷</author>
  182. 183    <price>58.3</price>
  183. 184  </Node>
  184. 185  <Node genre="update张三" ISBN="1-1111-1">
  185. 186    <title>C#入门帮助</title>
  186. 187    <author>亚胜</author>
  187. 188    <price>158.3</price>
  188. 189  </Node>
  189. 190</Employees>
  190. 191
  191. 1924,修改结点(添加结点的属性和添加结点的自结点):
  192. 193XmlDocument xmlDoc=new XmlDocument(); 
  193. 194xmlDoc.Load( Server.MapPath("data.xml") ); 
  194. 195
  195. 196XmlNodeList nodeList=xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点 
  196. 197
  197. 198foreach(XmlNode xn in nodeList) 
  198. 199{ 
  199. 200XmlElement xe=(XmlElement)xn; 
  200. 201xe.SetAttribute("test","111111");
  201. 202
  202. 203XmlElement xesub=xmlDoc.CreateElement("flag"); 
  203. 204xesub.InnerText="1"
  204. 205xe.AppendChild(xesub); 
  205. 206} 
  206. 207xmlDoc.Save( Server.MapPath("data.xml") );
  207. 208
  208. 209/**///////////////////////////////////////////////////////////////////////////////////////
  209. 210结果:每个结点的属性都添加了一个,子结点也添加了一个,内容如下,
  210. 211<?xml version="1.0"?>
  211. 212<Employees>
  212. 213  <Node genre="李赞红" ISBN="2-3631-4" test="111111">
  213. 214    <title>CS从入门到精通</title>
  214. 215    <author>候捷</author>
  215. 216    <price>58.3</price>
  216. 217    <flag>1</flag>
  217. 218  </Node>
  218. 219  <Node genre="李赞红" ISBN="2-3631-4" test="111111">
  219. 220    <title>CS从入门到精通</title>
  220. 221    <author>候捷</author>
  221. 222    <price>58.3</price>
  222. 223    <flag>1</flag>
  223. 224  </Node>
  224. 225  <Node genre="update张三" ISBN="1-1111-1" test="111111">
  225. 226    <title>C#入门帮助</title>
  226. 227    <author>亚胜</author>
  227. 228    <price>158.3</price>
  228. 229    <flag>1</flag>
  229. 230  </Node>
  230. 231</Employees>
  231. 232
  232. 2335,删除结点中的某一个属性:
  233. 234XmlDocument xmlDoc=new XmlDocument(); 
  234. 235xmlDoc.Load( Server.MapPath("data.xml") ); 
  235. 236XmlNodeList xnl=xmlDoc.SelectSingleNode("Employees").ChildNodes; 
  236. 237foreach(XmlNode xn in xnl) 
  237. 238{ 
  238. 239XmlElement xe=(XmlElement)xn; 
  239. 240xe.RemoveAttribute("genre");//删除genre属性 
  240. 241
  241. 242XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点 
  242. 243foreach(XmlNode xn1 in nls)//遍历 
  243. 244{ 
  244. 245XmlElement xe2=(XmlElement)xn1;//转换类型 
  245. 246if(xe2.Name=="flag")//如果找到 
  246. 247{ 
  247. 248xe.RemoveChild(xe2);//则删除
  248. 249} 
  249. 250} 
  250. 251} 
  251. 252xmlDoc.Save( Server.MapPath("data.xml") ); 
  252. 253
  253. 254/**///////////////////////////////////////////////////////////////////////////////////////]
  254. 255结果:删除了结点的一个属性和结点的一个子结点,内容如下,
  255. 256<?xml version="1.0"?>
  256. 257<Employees>
  257. 258  <Node ISBN="2-3631-4" test="111111">
  258. 259    <title>CS从入门到精通</title>
  259. 260    <author>候捷</author>
  260. 261    <price>58.3</price>
  261. 262  </Node>
  262. 263  <Node ISBN="2-3631-4" test="111111">
  263. 264    <title>CS从入门到精通</title>
  264. 265    <author>候捷</author>
  265. 266    <price>58.3</price>
  266. 267  </Node>
  267. 268  <Node ISBN="1-1111-1" test="111111">
  268. 269    <title>C#入门帮助</title>
  269. 270    <author>亚胜</author>
  270. 271    <price>158.3</price>
  271. 272  </Node>
  272. 273</Employees>
  273. 274
  274. 2756,删除结点:
  275. 276XmlDocument xmlDoc=new XmlDocument(); 
  276. 277xmlDoc.Load( Server.MapPath("data.xml") ); 
  277. 278XmlNode root=xmlDoc.SelectSingleNode("Employees");
  278. 279XmlNodeList xnl=xmlDoc.SelectSingleNode("Employees").ChildNodes; 
  279. 280for(int i=0;i<xnl.Count;i++)
  280. 281{
  281. 282XmlElement xe=(XmlElement)xnl.Item(i); 
  282. 283if(xe.GetAttribute("genre")=="张三"
  283. 284{ 
  284. 285root.RemoveChild(xe);
  285. 286if(i<xnl.Count)i=i-1;
  286. 287} 
  287. 288}
  288. 289xmlDoc.Save( Server.MapPath("data.xml") ); 
  289. 290
  290. 291/**///////////////////////////////////////////////////////////////////////////////////////]
  291. 292结果:删除了符合条件的所有结点,原来的内容:
  292. 293
  293. 294<?xml version="1.0"?>
  294. 295<Employees>
  295. 296  <Node genre="李赞红" ISBN="2-3631-4">
  296. 297    <title>CS从入门到精通</title>
  297. 298    <author>候捷</author>
  298. 299    <price>58.3</price>
  299. 300  </Node>
  300. 301  <Node genre="李赞红" ISBN="2-3631-4">
  301. 302    <title>CS从入门到精通</title>
  302. 303    <author>候捷</author>
  303. 304    <price>58.3</price>
  304. 305  </Node>
  305. 306  <Node genre="张三" ISBN="1-1111-1">
  306. 307    <title>C#入门帮助</title>
  307. 308    <author>高手</author>
  308. 309    <price>158.3</price>
  309. 310  </Node>
  310. 311  <Node genre="张三" ISBN="1-1111-1">
  311. 312    <title>C#入门帮助</title>
  312. 313    <author>高手</author>
  313. 314    <price>158.3</price>
  314. 315  </Node>
  315. 316</Employees>
  316. 317
  317. 318删除后的内容:
  318. 319<?xml version="1.0"?>
  319. 320<Employees>
  320. 321  <Node genre="李赞红" ISBN="2-3631-4">
  321. 322    <title>CS从入门到精通</title>
  322. 323    <author>候捷</author>
  323. 324    <price>58.3</price>
  324. 325  </Node>
  325. 326  <Node genre="李赞红" ISBN="2-3631-4">
  326. 327    <title>CS从入门到精通</title>
  327. 328    <author>候捷</author>
  328. 329    <price>58.3</price>
  329. 330  </Node>
  330. 331</Employees>
  331. ============================
  332. 用DropDownList绑定Xml数据      
  333. .cs
  334. DataSet ds = new DataSet();
  335.             ds.ReadXml(@Server.MapPath("~/App_Data/Users.xml"));
  336.             DataView dv = new DataView(ds.Tables[0]);
  337.             foreach (DataRowView drv in dv)
  338.             {
  339.                 this.DropDownList1.Items.Add(new ListItem(drv["UserName"].ToString(), drv["UserID"].ToString()));
  340.             }
  341. .xml
  342. <?xml version="1.0" encoding="utf-8"?>
  343. <NewDataSet>
  344.  <UserTable>
  345.   <UserID>1</UserID>
  346.   <UserName>Csaspx</UserName>
  347.  </UserTable>
  348.  <UserTable>
  349.   <UserID>2</UserID>
  350.   <UserName>Jacky</UserName>
  351.  </UserTable>
  352.  <UserTable>
  353.   <UserID>3</UserID>
  354.   <UserName>Wstime</UserName>
  355.  </UserTable>
  356. </NewDataSet>
  357. ===================
  358. DropDownList怎么条件显示xml
  359. XmlDocument xmlDoc = new XmlDocument();
  360. xmlDoc.Load("XML文件路径");
  361. XmlNodeList xmlList = xmlDoc.SelectSingleNode("根接点/字节点").ChildNodes;
  362.  string[] y = new string[5];
  363.             foreach (XmlNode xmlNo in xmlList)
  364.             {
  365.                 XmlElement xe = (XmlElement)xmlNo;
  366.                 {
  367.                     if (xe.Name == "内容")
  368.                     {
  369.                         y[0] = xe.InnerText;
  370.                     }
  371.                 }
  372.             }
  373. string  str = y[0].tostring();
  374. DropDownList1.Items.Add(str);  
原创粉丝点击