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