操作Xml文件

操作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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值