我们来自五湖四海,不为别的,只因有共同的爱好,为中国互联网发展出一分力!

在C#.net中如何操作XML

2014年05月09日22:24 阅读: 32489 次

标签: 在C#.net中如何操作XML

需要添加的命名空间:using?System.Xml;

定义几个公共对象:XmlDocument?xmldoc?;

XmlNode?xmlnode?;

XmlElement?xmlelem?;

1,创建到服务器同名目录下的xml文件:

方法一:


	
	
		xmldoc = new XmlDocument ( ) ;
	

	
		?
	

	
		//加入XML的声明段落xmlnode = xmldoc.CreateNode (XmlNodeType.XmlDeclaration , "" , "") ;
	

	
		?
	

	
		xmldoc.AppendChild (xmlnode) ;
	

	
		?
	

	
		//加入一个根元素xmlelem = xmldoc.CreateElement ("" , "Employees" , "") ;
	

	
		?
	

	
		xmldoc.AppendChild (xmlelem) ;
	

	
		?
	

	
		//加入另外一个元素for(
	

	
		?
	

	
		int i=1;
	

	
		?
	

	
		i<3;
	

	
		?
	

	
		i++ )
	

	
		?
	

	
		{
	

	
		?
	

	
		XmlNode root=xmldoc.SelectSingleNode( "Employees" );
	

	
		?
	

	
		//查找 XmlElement xe1=xmldoc.CreateElement( "Node" );
	

	
		?
	

	
		//创建一个节点 xe1.SetAttribute( "genre","李赞红" );
	

	
		?
	

	
		//设置该节点genre属性 xe1.SetAttribute( "ISBN","2-3631-4" );
	

	
		?
	

	
		//设置该节点ISBN属性
	

	
		?
	

	
		XmlElement xesub1=xmldoc.CreateElement( "title" );
	

	
		?
	

	
		xesub1.InnerText="CS从入门到精通";
	

	
		?
	

	
		//设置文本节点 xe1.AppendChild( xesub1 );
	

	
		?
	

	
		//添加到节点中 XmlElement xesub2=xmldoc.CreateElement( "author" );
	

	
		?
	

	
		xesub2.InnerText="候捷";
	

	
		?
	

	
		xe1.AppendChild( xesub2 );
	

	
		?
	

	
		XmlElement xesub3=xmldoc.CreateElement( "price" );
	

	
		?
	

	
		xesub3.InnerText="58.3";
	

	
		?
	

	
		xe1.AppendChild( xesub3 );
	

	
		?
	

	
		?
	

	
		?
	

	
		root.AppendChild( xe1 );
	

	
		?
	

	
		//添加到节点中
	

	
		?
	

	
		}
	

	
		?
	

	
		//保存创建好的XML文档xmldoc.Save (Server.MapPath( "data.xml" )) ;
	

	
		?
	

	
		?
	

	
		?
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		////
	

	
		?
	


结果:在同名目录下生成了名为data.xml的文件,内容如下,

?


	
	
		 
	

	
		?
	

	
		CS从入门到精通
	

	
		?
	

	
		候捷
	

	
		?
	

	
		58.3   CS从入门到精通候捷 58.3  方法二:XmlTextWriter xmlWriter; string strFilename = Server.MapPath( "data1.xml" ) ;
	

	
		?
	

	
		xmlWriter = new XmlTextWriter( strFilename,Encoding.Default );
	

	
		?
	

	
		//创建一个xml文档
	

	
		?
	

	
		xmlWriter.Formatting = Formatting.Indented;
	

	
		?
	

	
		xmlWriter.WriteStartDocument( );
	

	
		?
	

	
		xmlWriter.WriteStartElement( "Employees" );
	

	
		?
	

	
		xmlWriter.WriteStartElement( "Node" );
	

	
		?
	

	
		xmlWriter.WriteAttributeString( "genre","李赞红" );
	

	
		?
	

	
		xmlWriter.WriteAttributeString( "ISBN","2-3631-4" );
	

	
		?
	

	
		xmlWriter.WriteStartElement( "title" );
	

	
		?
	

	
		xmlWriter.WriteString( "CS从入门到精通" );
	

	
		?
	

	
		xmlWriter.WriteEndElement( );
	

	
		?
	

	
		xmlWriter.WriteStartElement( "author" );
	

	
		?
	

	
		xmlWriter.WriteString( "候捷" );
	

	
		?
	

	
		xmlWriter.WriteEndElement( );
	

	
		?
	

	
		xmlWriter.WriteStartElement( "price" );
	

	
		?
	

	
		xmlWriter.WriteString( "58.3" );
	

	
		?
	

	
		xmlWriter.WriteEndElement( );
	

	
		?
	

	
		xmlWriter.WriteEndElement( );
	

	
		?
	

	
		xmlWriter.Close( );
	

	
		?
	

	
		?
	

	
		?
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		////结果:  
	

	
		?
	

	
		CS从入门到精通
	

	
		?
	

	
		候捷
	

	
		?
	

	
		58.3 
	

	
		?
	


2,添加一个结点:

?


	
	
		XmlDocument xmlDoc=new XmlDocument( );
	

	
		?
	

	
		xmlDoc.Load( Server.MapPath( "data.xml" ) );
	

	
		?
	

	
		XmlNode root=xmlDoc.SelectSingleNode( "Employees" );
	

	
		?
	

	
		//查找 XmlElement xe1=xmlDoc.CreateElement( "Node" );
	

	
		?
	

	
		//创建一个节点 xe1.SetAttribute( "genre","张三" );
	

	
		?
	

	
		//设置该节点genre属性 xe1.SetAttribute( "ISBN","1-1111-1" );
	

	
		?
	

	
		//设置该节点ISBN属性
	

	
		?
	

	
		XmlElement xesub1=xmlDoc.CreateElement( "title" );
	

	
		?
	

	
		xesub1.InnerText="C#入门帮助";
	

	
		?
	

	
		//设置文本节点 xe1.AppendChild( xesub1 );
	

	
		?
	

	
		//添加到节点中 XmlElement xesub2=xmlDoc.CreateElement( "author" );
	

	
		?
	

	
		xesub2.InnerText="高手";
	

	
		?
	

	
		xe1.AppendChild( xesub2 );
	

	
		?
	

	
		XmlElement xesub3=xmlDoc.CreateElement( "price" );
	

	
		?
	

	
		xesub3.InnerText="158.3";
	

	
		?
	

	
		xe1.AppendChild( xesub3 );
	

	
		?
	

	
		?
	

	
		?
	

	
		?
	

	
		root.AppendChild( xe1 );
	

	
		?
	

	
		//添加到节点中 xmlDoc.Save (Server.MapPath( "data.xml" ));
	

	
		?
	

	
		?
	

	
		?
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	


结果:在xml原有的内容里添加了一个结点,内容如下,

?


	
	
		 
	

	
		?
	

	
		CS从入门到精通
	

	
		?
	

	
		候捷
	

	
		?
	

	
		58.3  
	

	
		?
	

	
		CS从入门到精通
	

	
		?
	

	
		候捷
	

	
		?
	

	
		58.3  
	

	
		?
	

	
		C#入门帮助
	

	
		?
	

	
		高手
	

	
		?
	

	
		158.3 
	

	
		?
	


3,修改结点的值(属性和子结点):

?


	
	
		XmlDocument xmlDoc=new XmlDocument( );
	

	
		?
	

	
		xmlDoc.Load(Server.MapPath( "data.xml" ));
	

	
		?
	

	
		?
	

	
		?
	

	
		?
	

	
		XmlNodeList nodeList=xmlDoc.SelectSingleNode( "Employees" ).ChildNodes;
	

	
		?
	

	
		//获取Employees节点的所有子节点
	

	
		?
	

	
		foreach( XmlNode xn in nodeList )//遍历所有子节点
	

	
		?
	

	
		{
	

	
		?
	

	
		XmlElement xe=( XmlElement )xn;
	

	
		?
	

	
		//将子节点类型转换为XmlElement类型 if( xe.GetAttribute( "genre" )=="张三" )//如果genre属性值为“张三”
	

	
		?
	

	
		{
	

	
		?
	

	
		xe.SetAttribute( "genre","update张三" );
	

	
		?
	

	
		//则修改该属性为“update张三”
	

	
		?
	

	
		XmlNodeList nls=xe.ChildNodes;
	

	
		?
	

	
		//继续获取xe子节点的所有子节点 foreach( XmlNode xn1 in nls )//遍历
	

	
		?
	

	
		{
	

	
		?
	

	
		XmlElement xe2=( XmlElement )xn1;
	

	
		?
	

	
		//转换类型 if( xe2.Name=="author" )//如果找到
	

	
		?
	

	
		{
	

	
		?
	

	
		xe2.InnerText="亚胜";
	

	
		?
	

	
		//则修改
	

	
		?
	

	
		}
	

	
		?
	

	
		}
	

	
		?
	

	
		}
	

	
		?
	

	
		}
	

	
		?
	

	
		xmlDoc.Save(Server.MapPath( "data.xml" ));
	

	
		?
	

	
		//保存.
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		/////
	

	
		?
	


结果:将原来的所有结点的信息都修改了,xml的内容如下,

?


	
	
		 
	

	
		?
	

	
		CS从入门到精通
	

	
		?
	

	
		候捷
	

	
		?
	

	
		58.3  
	

	
		?
	

	
		CS从入门到精通
	

	
		?
	

	
		候捷
	

	
		?
	

	
		58.3  
	

	
		?
	

	
		C#入门帮助
	

	
		?
	

	
		亚胜
	

	
		?
	

	
		158.3 
	

	
		?
	

	
		4,修改结点(添加结点的属性和添加结点的自结点):
	

	
		?
	

	
		XmlDocument xmlDoc=new XmlDocument( );
	

	
		?
	

	
		xmlDoc.Load(Server.MapPath( "data.xml" ));
	

	
		?
	

	
		?
	

	
		?
	

	
		?
	

	
		XmlNodeList nodeList=xmlDoc.SelectSingleNode( "Employees" ).ChildNodes;
	

	
		?
	

	
		//获取Employees节点的所有子节点
	

	
		?
	

	
		foreach( XmlNode xn in nodeList )
	

	
		?
	

	
		{
	

	
		?
	

	
		XmlElement xe=( XmlElement )xn;
	

	
		?
	

	
		xe.SetAttribute( "test","111111" );
	

	
		?
	

	
		XmlElement xesub=xmlDoc.CreateElement( "flag" );
	

	
		?
	

	
		xesub.InnerText="1";
	

	
		?
	

	
		xe.AppendChild( xesub );
	

	
		?
	

	
		}
	

	
		?
	

	
		xmlDoc.Save(Server.MapPath( "data.xml" ));
	

	
		?
	

	
		?
	

	
		?
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		/////
	

	
		?
	


结果:每个结点的属性都添加了一个,子结点也添加了一个,内容如下,

?


	
	
		 
	

	
		?
	

	
		CS从入门到精通
	

	
		?
	

	
		候捷
	

	
		?
	

	
		58.3
	

	
		?
	

	
		1  
	

	
		?
	

	
		CS从入门到精通
	

	
		?
	

	
		候捷
	

	
		?
	

	
		58.3
	

	
		?
	

	
		1  
	

	
		?
	

	
		C#入门帮助
	

	
		?
	

	
		亚胜
	

	
		?
	

	
		158.3
	

	
		?
	

	
		1 
	

	
		?
	


5,删除结点中的某一个属性:

?


	
	
		XmlDocument xmlDoc=new XmlDocument( );
	

	
		?
	

	
		xmlDoc.Load(Server.MapPath( "data.xml" ));
	

	
		?
	

	
		XmlNodeList xnl=xmlDoc.SelectSingleNode( "Employees" ).ChildNodes;
	

	
		?
	

	
		foreach( XmlNode xn in xnl )
	

	
		?
	

	
		{
	

	
		?
	

	
		XmlElement xe=( XmlElement )xn;
	

	
		?
	

	
		xe.RemoveAttribute( "genre" );
	

	
		?
	

	
		//删除genre属性
	

	
		?
	

	
		XmlNodeList nls=xe.ChildNodes;
	

	
		?
	

	
		//继续获取xe子节点的所有子节点 foreach( XmlNode xn1 in nls )//遍历
	

	
		?
	

	
		{
	

	
		?
	

	
		XmlElement xe2=( XmlElement )xn1;
	

	
		?
	

	
		//转换类型 if( xe2.Name=="flag" )//如果找到
	

	
		?
	

	
		{
	

	
		?
	

	
		xe.RemoveChild( xe2 );
	

	
		?
	

	
		//则删除
	

	
		?
	

	
		}
	

	
		?
	

	
		}
	

	
		?
	

	
		}
	

	
		?
	

	
		xmlDoc.Save(Server.MapPath( "data.xml" ));
	

	
		?
	

	
		?
	

	
		?
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///
	

	
		?
	

	
		///]
	

	
		?
	


结果:删除了结点的一个属性和结点的一个子结点,内容如下,

?


	
	
		 
	

	
		?
	

	
		CS从入门到精通
	

	
		?
	

	
		候捷
	

	
		?
	

	
		58.3  
	

	
		?
	

	
		CS从入门到精通
	

	
		?
	

	
		候捷
	

	
		?
	

	
		58.3  
	

	
		?
	

	
		C#入门帮助
	

	
		?
	

	
		亚胜
	

	
		?
	

	
		158.3 
	

	
		?
	


6,删除结点:XmlDocument?xmlDoc=new?XmlDocument(?);

?


	
	
		xmlDoc.Load(Server.MapPath( "data.xml" ));
	

	
		?
	

	
		XmlNode root=xmlDoc.SelectSingleNode( "Employees" );
	

	
		?
	

	
		XmlNodeList xnl=xmlDoc.SelectSingleNode( "Employees" ).ChildNodes;
	

	
		?
	

	
		for(
	

	
		?
	

	
		int i=0;
	

	
		?
	

	
		i

结果:删除了符合条件的所有结点,原来的内容:

?


	
	
		 
	

	
		?
	

	
		CS从入门到精通
	

	
		?
	

	
		候捷
	

	
		?
	

	
		58.3  
	

	
		?
	

	
		CS从入门到精通
	

	
		?
	

	
		候捷
	

	
		?
	

	
		58.3  
	

	
		?
	

	
		C#入门帮助
	

	
		?
	

	
		高手
	

	
		?
	

	
		158.3  
	

	
		?
	

	
		C#入门帮助
	

	
		?
	

	
		高手
	

	
		?
	

	
		158.3 
	

	
		?
	


删除后的内容:

?


	
	
		 
	

	
		?
	

	
		CS从入门到精通
	

	
		?
	

	
		候捷
	

	
		?
	

	
		58.3  
	

	
		?
	

	
		CS从入门到精通
	

	
		?
	

	
		候捷
	

	
		?
	

	
		58.3 
	

	
		?
	



?
分享到: 更多
?2019 安全焦点 版权所有.