操作Xml文件有2大类:
一:XmlDocument
定义和显示
XmlDocument xmldoc; // 定义3个对象
XmlNode xmlnode;
XmlElement xmlelem;
public void XmlShow() // 显示XML
... {
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath("xml1.xml"));
xm1.Document=xmldoc; //asp.net控件asp:Xml
}1:写xml文件
xmldoc = new XmlDocument();
XmlDeclaration xmldecl; // 输入头
xmldecl = xmldoc.CreateXmlDeclaration( " 1.0 " , " gb2312 " , null );
xmldoc.AppendChild(xmldecl);
xmlelem = xmldoc.CreateElement( "" , " player " , "" ); // 加入根元素
xmldoc.AppendChild(xmlelem);
XmlNode root = xmldoc.SelectSingleNode( " player " );
XmlElement xe = xmldoc.CreateElement( " card " );
xe.SetAttribute( " id " , " 1 " );
xe.SetAttribute( " sex " , " 男 " );
XmlElement xue1 = xmldoc.CreateElement( " name " ); // 加入节点 xue1
xue1.InnerText = " 张飞 " ;
xe.AppendChild(xue1);
XmlElement xue2 = xmldoc.CreateElement( " send " );
xue2.InnerText = " zhangfei@163.com " ;
xe.AppendChild(xue2);
XmlElement xue3 = xmldoc.CreateElement( " Age " );
xue3.InnerText = " 19 " ;
xe.AppendChild(xue3);
root.AppendChild(xe);
XmlElement xg = xmldoc.CreateElement( " card " ); // 第二项
xg.SetAttribute( " id " , " 2 " );
xg.SetAttribute( " sex " , " 女 " );
XmlElement xue4 = xmldoc.CreateElement( " name " ); // 加入节点 xue1
xue4.InnerText = " 清华 " ;
xg.AppendChild(xue4);
XmlElement xue5 = xmldoc.CreateElement( " send " );
xue5.InnerText = " qinghua@263.com " ;
xg.AppendChild(xue5);
XmlElement xue6 = xmldoc.CreateElement( " Age " );
xue6.InnerText = " 30 " ;
xg.AppendChild(xue6);
root.AppendChild(xg);
xmldoc.Save(Server.MapPath( " xml1.xml " ));
XmlShow(); // 显示
2:修改xml文件
xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath( " xml1.xml " ));
XmlNodeList nodelist = xmldoc.SelectSingleNode( " player " ).ChildNodes;
foreach (XmlNode xn in nodelist)
... {
XmlElement xe=(XmlElement)xn;
if(xe.GetAttribute("id")=="2")
...{
xe.SetAttribute("id","3");
XmlNodeList xl = xe.ChildNodes;
foreach( XmlNode xl1 in xl)
...{
XmlElement gt= (XmlElement)xl1;
if(gt.Name=="Age")
...{
gt.InnerText="28";
}
}
}
}
xmldoc.Save(Server.MapPath( " xml1.xml " ));
XmlShow();3:添加
xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath( " xml1.xml " ));
XmlNode root = xmldoc.SelectSingleNode( " player " );
XmlElement xq = xmldoc.CreateElement( " card " );
xq.SetAttribute( " id " , " 4 " );
xq.SetAttribute( " sex " , " 女 " );
XmlElement xq1 = xmldoc.CreateElement( " name " );
xq1.InnerText = " 王八 " ;
xq.AppendChild(xq1);
XmlElement xq2 = xmldoc.CreateElement( " send " );
xq2.InnerText = " wangba@tom.com " ;
xq.AppendChild(xq2);
root.AppendChild(xq);
xmldoc.Save(Server.MapPath( " xml1.xml " ));
XmlShow(); // 显示4:删除节点或属性
xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath( " xml1.xml " ));
XmlNodeList nodelist = xmldoc.SelectSingleNode( " player " ).ChildNodes;
foreach (XmlNode xn in nodelist)
... {
XmlElement xe=(XmlElement)xn;
if(xe.GetAttribute("id")=="2")
...{
xe.RemoveAttribute("id");
xe.RemoveChild(xe.LastChild); //删除最后一个节点,参数是int的
}
}
xmldoc.Save(Server.MapPath( " xml1.xml " ));
XmlShow();
二:XmlTextReader和XmlTextWriter(都是基于流的,只写了reader)
XmlTextReader reader; // 定义
string filename = Server.MapPath( " data.xml " );
reader = new XmlTextReader(filename);
try
... {
while(reader.Read())
...{
switch(reader.NodeType)
...{
case XmlNodeType.Element:
Response.Write(Server.HtmlEncode("<"+reader.Name+">")+"<br>");
break;
case XmlNodeType.Text:
Response.Write(reader.Value+"<br>");
break;
case XmlNodeType.CDATA:
Response.Write(Server.HtmlEncode("<![CDATA["+reader.Value+"]]")+"<br>");
break;
case XmlNodeType.ProcessingInstruction:
Response.Write(Server.HtmlEncode("<?"+reader.Name+" "+reader.Value+"?>")+"<br>");
break;
case XmlNodeType.Comment:
Response.Write(Server.HtmlEncode("<!--"+reader.Value+"-->")+"<br>");
break;
case XmlNodeType.XmlDeclaration:
Response.Write(Server.HtmlEncode("<?xml version='1.0'?>")+"<br>");
break;
case XmlNodeType.Document:
break;
case XmlNodeType.DocumentType:
Response.Write(Server.HtmlEncode("<!DOCTYPE "+reader.Name+" ["+reader.Value+"]")+"<br>");
break;
case XmlNodeType.EntityReference:
Response.Write(reader.Name+"<br>");
break;
case XmlNodeType.EndElement:
Response.Write(Server.HtmlEncode("</"+reader.Name+">")+"<br>");
break;
}
}
}
finally
... {
if(reader!=null)
reader.Close();
}