手把手教你C#读取XML文件
来源:互联网 发布:java读取hdfs文件内容 编辑:程序博客网 时间:2024/05/22 13:15
C#读取XML资料
一 C#读取XML资料
扩充标记语言XML(eXtensible Markup Language),是由W三C机关制订的。做为用以代替HTML语言的一种新式的标记语言,XML内部有着很多根本基准,XML乃是经过与这些相干基准地组合,应用于科学计算、电子出版、多媒体系体例作和电子商务的。C#作为一种新式的程序语言,是.Net构架的一个主要组成部分,他和XML的关系颇深。正文就从一个方面来研讨一下子这彼此的关系。即:观用C#何以来创造和读取XML文档。
1. 正文程序设计和运作的软件环境:
(1).微软公司视窗2000服务器版
(2)..Net FrameWork SDK Beta 二
2. C#创造XML文档:
在正文中我们来引见一下子用C#创造XML文档的二种步骤,这二种步骤各有所长,第一种创办起来更灵便,第二种创设起来更便利。
(1).C#创设XML文档的第一种步骤:
这一种步骤是依照依照XML的构造一步一步的构建XML文档。C#构建XML文档透过.Net FrameWork SDK中的定名空间"System.Xml"中打包的各品种来兑现的。底下就依照一个XML典型文档构造来引见一下子。
(一).首先要创办一个空的XML文档:
在定名空间"System.Xml"中有一个种"XmlDocument",C#经过这个种来描述XML文档。下部是用C#创设一个XML文档。
xmldoc = new System.Xml.XmlDocument ( ) ;
(二).在XML的文档的最脑袋加入XML的宣言段落:
利用"XmlDocument"种中的 "CreateNode" 步骤可以创造一个指定部类的XML节点,"CreateNode" 步骤的调用步骤总共有三种,在正文中运用的其通常的步骤,具体语法如次:
XmlDocument.CreateNode Method ( XmlNodeType , String , String )
其后在利用"XmlDocument"种中的"AppendChild"步骤在XML文档中加入此节点,用C#在XML文档中加入宣言段贯彻现的话语如次:
xmlnode = xmldoc.CreateNode ( XmlNodeType.XmlDeclaration , "" , "" ) ;
xmldoc.AppendChild ( xmlnode ) ;
(三).为XML文档加入元素(element):
加入数据内容是透过元素,在"XmlDocument"种中提供了二个步骤:"CreateElement"和"CreateTextNode"。此中第一个步骤是在XML中创办一个元素,除此以外一个步骤是为创造的元素指定文本值。下边是为上头创办的XML文档加入一个根元素。
xmlelem = xmldoc.CreateElement ( "" , "ROOT" , "" ) ;
xmltext = xmldoc.CreateTextNode ( "Root Text" ) ;
诠释:此中"xmlelem"是创设的"XmlElement"对象,"xmltext"是"XmlText"对象
有了创造一个XML元素的事例,就可以依据XML文档中数据的不同的构造来创设其余的数据了。
using System ;
using System.Xml ;
class MainClass
{
XmlDocument xmldoc ;
XmlNode xmlnode ;
XmlElement xmlelem ;
XmlElement xmlelem二 ;
XmlText xmltext ;
static void Main ( string [ ] args )
{
MainClass app = new MainClass ( ) ;
}
public MainClass ( )
{
xmldoc = new XmlDocument ( ) ;
//加入XML的宣言段落
xmlnode = xmldoc.CreateNode ( XmlNodeType.XmlDeclaration , "" , "" ) ;
xmldoc.AppendChild ( xmlnode ) ;
//加入一个根元素
xmlelem = xmldoc.CreateElement ( "" , "ROOT" , "" ) ;
xmltext = xmldoc.CreateTextNode ( "Root Text" ) ;
xmlelem.AppendChild ( xmltext ) ;
xmldoc.AppendChild ( xmlelem ) ;
//加入此外一个元素
xmlelem二 = xmldoc.CreateElement ("SampleElement" ) ;
xmlelem二 = xmldoc.CreateElement ( "" , "SampleElement" , "" ) ;
xmltext = xmldoc.CreateTextNode ( "The text of the sample element" ) ;
--------------------------------------------------------------------------------
C#读取XML资料
xmldoc.ChildNodes.Item(一).AppendChild ( xmlelem二 ) ;
//封存创设好的XML文档
try
{
xmldoc.Save ( "c://data.xml" ) ;
}
catch ( Exception e )
{
//展示错误信息
Console.WriteLine ( e.Message ) ;
}
Console.ReadLine ( ) ;
}
}
(3).C#创设XML文档的第二种步骤:
在引见完第一种步骤之后,我念每一个读者都感觉到用C#创设XML文档是一项比较烦杂的工作了,由于不仅仅要懂得创办的学识,还要理解文档的构造,这么创设的历程乃是一步一步的了。下头就来引见一种比较简略的创设步骤,这种创造步骤是直接定义XML文档,其后把他保留到资料中就可以了。
(一).创办一个XML文档:
这一点和第一种步骤同样,在这里就不引见了。
(二).经过"XmlDocument"种中的"LoadXml"步骤,直接在文档中加入想要加入的XML数据。当然你加入的XML应当契合XML的语法,要不然发作的资料也没有什么意思了。底下是加入XML的具体代码:
doc.LoadXml (
" " +
"" +
"Ma Jin Hu" +
" 239000 " +
"
" +
"Chu Zhou City" +
" ANHUI " +
"" +
"" +
"Wang Tian" +
" 239000 " +
"
" +
"He Fei City" +
" ANHUI " +
"" +
"" +
"Zou Wen Biao" +
" 100000 " +
"
" +
"Bei Jin City" +
"Bei Jin" +
"" +
"" ) ;
封存XML文档是经过"XmlDocument"种中的"Save"步骤来兑现的。具体如次:
doc.Save ( "data.xml" ) ;
(4).C#创设XML文档的第二种步骤的源程序代码(NO二.cs):
using System ;
using System.IO ;
using System.Xml;
public class Sample
{
public static void Main ( )
{
//创办一个XmlDocument对象
XmlDocument doc = new XmlDocument ( ) ;
doc.LoadXml (
" " +
"" +
"Ma Jin Hu" +
" 239000 " +
"
" +
"Chu Zhou City" +
" ANHUI " +
"" +
"" +
"Wang Tian" +
" 239000 " +
"
" +
"He Fei City" +
" ANHUI " +
"" +
"" +
"Zou Wen Biao" +
" 100000 " +
"
" +
三 <>
"Bei Jin" +
"" +
"" ) ;
//封存这个文档到资料中
doc.Save ( "data.xml" ) ;
}
}
用C#创办XML文档的步骤其实有很多,在这里只是提选了二种比较典型的步骤加以引见。但无论是那一种步骤,C#在创造XML的时分都亟需用到.Net FrameWork SDK。之所以理解并掌握这个类库中的内容至于C#编程是十分必要的,鄙人面我们未来引见一下子用C#读取XML中的数据,透过这你会发现,C#又是利用这个类库兑现这个效能的。
3.C#读取XML资料:
本节将用C#来读取正文顶用第二种步骤创设的XML资料,编译NO二.cs后,施行将发作"data.xml"资料,此中"data.xml"资料的数据结构如次:
Ma Jin Hu
239000
Chu Zhou City
ANHUI
Wang Tian
239000
He Fei City
ANHUI
Zou Wen Biao
100000
Bei Jin City
Bei Jin
鄙人面的内容中,我们利用C#读取此资料,并用ListView组件依照数据结构给显示出来。下图是读取此XML后的运作界面:
"Bei Jin" +
"" +
"" ) ;
//封存这个文档到资料中
doc.Save ( "data.xml" ) ;
}
}
用C#创设XML文档的步骤其实有很多,在这里只是拣选了二种比较典型的步骤加以引见。但无论是那一种步骤,C#在创设XML的时分都亟需用到.Net FrameWork SDK。之所以理解并掌握这个类库中的内容至于C#编程是十分必要的,鄙人面我们未来引见一下子用C#读取XML中的数据,透过这你会发现,C#又是利用这个类库兑现这个效能的。
3.C#读取XML资料:
本节将用C#来读取正文顶用第二种步骤创设的XML资料,编译NO二.cs后,实施将发生"data.xml"资料,内中"data.xml"资料的数据结构如次:
Ma Jin Hu
239000
Chu Zhou City
ANHUI
Wang Tian
239000
He Fei City
ANHUI
Zou Wen Biao
100000
Bei Jin City
Bei Jin
鄙人面的内容中,我们利用C#读取此资料,并用ListView组件依照数据结构给显示出来。下图是读取此XML后的运作界面:
图01:C#读取XML后的运作界面
要准确读取XML数据,首先要理解XML的构造。依据上边的XML资料,可以晓得此XML包孕三个数据,底下就来看何以读取这三条数据:
(一).装入XML资料,形成数据流:
透过创设一个"XmlDocument"对象,其后利用"load"步骤,可以把XML资料装入,具体如次:
XmlDocument doc = new XmlDocument ( ) ;
// 装入指定的XML文档
doc.Load ( "C://data.xml" ) ;
(二).读取XML资料,并显示出来:
读取XML是透过创办"XmlNodeReader"对象来兑现的,"XmlNodeReader"对象重要是用以可以读取XML的节点数据。在正文的程序中施用到了一些"XmlNodeReader"的属性,诸如"NodeType"属性,用于判断读获得节点是什么部类。"Value"是节点的值。下部是读取XML资料并展示在ListView中的兑现代码,此中listview一是已经创设ListView组件:
while ( reader.Read ( ) )
{
//判断目前读获得节点部类
switch ( reader.NodeType )
{
case XmlNodeType.Element :
s = reader.Name ;
break ;
case XmlNodeType.Text :
if ( s.Equals ( "Name" ) )
myItem = Listview一.Items.Add ( reader.Value ) ;
else
myItem.SubItems.Add ( reader.Value ) ;
break ;
}
}
4.C#读取XML的资料的源程序代码(read.cs):
在理解了上边的内容之后,可以失去用C#读取指定XML资料的完整代码,具体如次:
using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using System.Xml ;
public class Form一 : Form
{
private Button button一 ;
private ListView Listview一 ;
private System.ComponentModel.Container components = null ;
public Form一 ( )
{
//初始化窗体中的各个组件
InitializeComponent ( ) ;
}
//驱除程序中运用过的资源
protected override void Dispose ( bool disposing )
< DIV>
四 C#读取XML资料
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}
private void InitializeComponent ( )
{
button一 = new Button ( ) ;
Listview一 = new ListView ( ) ;
SuspendLayout ( ) ;
button一.Anchor = ( ( AnchorStyles.Bottom | AnchorStyles.Left )
| AnchorStyles.Right ) ;
button一.Location = new Point ( 240 , 296 ) ;
button一.Name = "button一" ;
button一.Size = new Size ( 112 , 37 ) ;
button一.TabIndex = 零 ;
button一.Text = "读取XML文档" ;
button一.Click += new System.EventHandler ( button一_Click ) ;
Listview一.Anchor = ( ( ( AnchorStyles.Top | AnchorStyles.Bottom )
| AnchorStyles.Left )
| AnchorStyles.Right ) ;
Listview一.GridLines = true ;
Listview一.Location = new Point ( 十 , 九 ) ;
Listview一.Name = "Listview一" ;
Listview一.Size = new Size ( 623 , 269 ) ;
Listview一.TabIndex = 一 ;
Listview一.View = View.Details ;
this.AutoScaleBaseSize = new Size ( 六 , 14 ) ;
this.ClientSize = new Size ( 608 , 348 ) ;
this.Controls.Add ( Listview一 );
this.Controls.Add ( button一 );
this.Name = "Form一" ;
this.StartPosition = FormStartPosition.CenterScreen ;
this.Text = "用C#来读取XML文档" ;
this.ResumeLayout ( false ) ;
}
static void Main ( )
{
Application.Run ( new Form一 ( ) ) ;
}
private void button一_Click ( object sender , System.EventArgs e )
{
ListViewItem myItem = new ListViewItem ( ) ;
// 构建listview组件
Listview一.Columns.Clear ( ) ;
Listview一.Items.Clear ( ) ;
Listview一.Columns.Add ( "Name" , 80 , HorizontalAlignment.Left ) ;
Listview一.Columns.Add ( "Zip" , 80 , HorizontalAlignment.Left ) ;
Listview一.Columns.Add ( "Address" , 80 , HorizontalAlignment.Left ) ;
Listview一.Columns.Add ( "City" , 80 , HorizontalAlignment.Left ) ;
Listview一.Columns.Add ( "State" , 80 , HorizontalAlignment.Left ) ;
XmlNodeReader reader = null ;
try
{
string s = "" ;
XmlDocument doc = new XmlDocument ( ) ;
// 装入指定的XML文档
doc.Load ( "C://data.xml" ) ;
// 设定XmlNodeReader对象来打开XML资料
reader = new XmlNodeReader ( doc ) ;
// 读取XML资料中的数据,并显示出来
while ( reader.Read ( ) )
{
//判断现阶段读获得节点门类
switch ( reader.NodeType )
{
case XmlNodeType.Element :
s = reader.Name ;
break ;
case XmlNodeType.Text :
if ( s.Equals ( "Name" ) )
myItem = Listview一.Items.Add ( reader.Value ) ;
else
myItem.SubItems.Add ( reader.Value ) ;
break ;
}
}
}
finally
{
//驱除打开的数据流
if ( reader != null )
reader.Close ( ) ;
}
}
}
5.小结:
C#和XML的溯源是很深的,正文只是从一个侧面体现了彼此关系的紧密亲密程度。在.Net FrameWork SDK中存在好多可以直接操作XML的类库,掌握这些类库的使用方法,对用C#开发和XML有关程序是十分必要的。`
xd.Load("usr.xml");
XmlNode xd二=xd.SelectSingleNode("alluser");
XmlElement xd三=xd.CreateElement("zhoujiping");
xd二.AppendChild(xd三);
xd.Save("usr.xml");
六 恢复:C#读取XML资料
在C#中操作XML
我用的是一种很愚的步骤,但可以相助初学者理解访问XML节点的历程。
已知有一个XML资料(bookstore.xml)如次:
Corets, Eva
5.95
一、去节点中安插一个节点:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("bookstore.xml");
XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查寻
XmlElement xe一=xmlDoc.CreateElement("book");//创造一个节点
xe一.SetAttribute("genre","李赞红");//设立该节点genre属性
xe一.SetAttribute("ISBN","二-3631-四");//设立该节点ISBN属性
XmlElement xesub一=xmlDoc.CreateElement("title");
xesub一.InnerText="CS从入门到精通";//设立文本节点
xe一.AppendChild(xesub一);//添加到节点中
XmlElement xesub二=xmlDoc.CreateElement("author");
xesub二.InnerText="候捷";
xe一.AppendChild(xesub二);
XmlElement xesub三=xmlDoc.CreateElement("price");
xesub三.InnerText="58.3";
xe一.AppendChild(xesub三);
root.AppendChild(xe一);//添加到节点中
xmlDoc.Save("bookstore.xml");
//===============================================
结果为:
Corets, Eva
5.95
候捷
58.3
xd.Load("usr.xml");
XmlNode xd二=xd.SelectSingleNode("alluser");
XmlElement xd三=xd.CreateElement("zhoujiping");
xd二.AppendChild(xd三);
xd.Save("usr.xml");
六 恢复:C#读取XML资料
在C#中操作XML
我用的是一种很愚的步骤,但可以相助初学者理解访问XML节点的历程。
已知有一个XML资料(bookstore.xml)如次:
Corets, Eva
5.95
一、去节点中安插一个节点:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("bookstore.xml");
XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查寻
XmlElement xe一=xmlDoc.CreateElement("book");//创设一个节点
xe一.SetAttribute("genre","李赞红");//设立该节点genre属性
xe一.SetAttribute("ISBN","二-3631-四");//设立该节点ISBN属性
XmlElement xesub一=xmlDoc.CreateElement("title");
xesub一.InnerText="CS从入门到精通";//设立文本节点
xe一.AppendChild(xesub一);//添加到节点中
XmlElement xesub二=xmlDoc.CreateElement("author");
xesub二.InnerText="候捷";
xe一.AppendChild(xesub二);
XmlElement xesub三=xmlDoc.CreateElement("price");
xesub三.InnerText="58.3";
xe一.AppendChild(xesub三);
root.AppendChild(xe一);//添加到节点中
xmlDoc.Save("bookstore.xml");
//===============================================
结果为:
Corets, Eva
5.95
候捷
58.3
二、批改节点:将genre属性值为“李赞红“的节点的genre值改成“update李赞红”,将该节点的子节点的文本批改为“亚胜”。
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的全部子节点
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 xn一 in nls)//遍历
{
XmlElement xe二=(XmlElement)xn一;//变换门类
if(xe二.Name=="author")//如其找出
{
xe二.InnerText="亚胜";//则批改
break;//找出退出来就可以了
}
}
break;
}
}
xmlDoc.Save("bookstore.xml");//封存。
//==================================================
最后结果为:
Corets, Eva
5.95
亚胜
58.3
三、剔除 节点的genre属性,剔除 节点。
XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;
foreach(XmlNode xn in xnl)
{
XmlElement xe=(XmlElement)xn;
if(xe.GetAttribute("genre")=="fantasy")
{
xe.RemoveAttribute("genre");//剔除genre属性
}
else if(xe.GetAttribute("genre")=="update李赞红")
{
xe.RemoveAll();//剔除该节点的所有内容
}
}
xmlDoc.Save("bookstore.xml");
//===========================================
最后结果为:
Corets, Eva
5.95
在C#中操作XML
我用的是一种很愚的步骤,但可以相助初学者懂得访问XML节点的进程。
已知有一个XML资料(bookstore.xml)如次:
Corets, Eva
5.95
一、去节点中安插一个节点:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("bookstore.xml");
XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查寻
XmlElement xe一=xmlDoc.CreateElement("book");//创造一个节点
xe一.SetAttribute("genre","李赞红");//设立该节点genre属性
xe一.SetAttribute("ISBN","二-3631-四");//设立该节点ISBN属性
XmlElement xesub一=xmlDoc.CreateElement("title");
xesub一.InnerText="CS从入门到精通";//设立文本节点
xe一.AppendChild(xesub一);//添加到节点中
XmlElement xesub二=xmlDoc.CreateElement("author");
xesub二.InnerText="候捷";
xe一.AppendChild(xesub二);
XmlElement xesub三=xmlDoc.CreateElement("price");
xesub三.InnerText="58.3";
xe一.AppendChild(xesub三);
root.AppendChild(xe一);//添加到节点中
xmlDoc.Save("bookstore.xml");
//===============================================
结果为:
Corets, Eva
5.95
候捷
58.3
二、批改节点:将genre属性值为“李赞红“的节点的genre值改成“update李赞红”,将该节点的子节点的文本批改为“亚胜”。
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的全部子节点
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 xn一 in nls)//遍历
{
XmlElement xe二=(XmlElement)xn一;//变换门类
if(xe二.Name=="author")//如若找出
{
xe二.InnerText="亚胜";//则批改
break;//找出退出来就可以了
}
}
break;
}
}
xmlDoc.Save("bookstore.xml");//封存。
//==================================================
最后结果为:
Corets, Eva
5.95
亚胜
58.3
三、剔除 节点的genre属性,剔除 节点。
XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;
foreach(XmlNode xn in xnl)
{
XmlElement xe=(XmlElement)xn;
if(xe.GetAttribute("genre")=="fantasy")
{
xe.RemoveAttribute("genre");//剔除genre属性
}
else if(xe.GetAttribute("genre")=="update李赞红")
{
xe.RemoveAll();//剔除该节点的所有内容
}
}
xmlDoc.Save("bookstore.xml");
//===========================================
最后结果为:
Corets, Eva
5.95
四、展示全部数据。
XmlNode xn=xmlDoc.SelectSingleNode("bookstore");
XmlNodeList xnl=xn.ChildNodes;
foreach(XmlNode xnf in xnl)
{
XmlElement xe=(XmlElement)xnf;
Console.WriteLine(xe.GetAttribute("genre"));//展示属性值
Console.WriteLine(xe.GetAttribute("ISBN"));
XmlNodeList xnf一=xe.ChildNodes;
foreach(XmlNode xn二 in xnf一)
{
Console.WriteLine(xn二.InnerText);//展示子节点点文本
}
本文来源:
我的异常网
Java Exception
Dotnet Exception
Oracle Exception
- 手把手教你C#读取XML文件
- 手把手教你C#生成CHM文件
- C#读取XML文件
- C#读取XML文件
- C#读取XML文件
- c#读取xml文件
- C#读取XML文件
- C#读取XML文件
- C#读取Xml文件
- C#读取Xml文件
- C#读取Xml文件
- C#读取Xml文件
- C#读取XML文件
- C#读取xml文件
- C#读取xml文件
- C#读取xml文件
- C#读取Xml文件
- C#读取XML文件
- 我了解的global temporary table
- JFreeChart 报表实例
- 概率论与数理统计及其应用 浙江大学 谢式千编
- 需求分析之需求分析方法——面向对象分析方法
- 配置
- 手把手教你C#读取XML文件
- 距离和相似性度量
- C复杂声明解析
- asp 木马源码(窃用)
- Qt学习日志-第四章
- 改变TextInput输入框得到焦点时边框的颜色
- 网页打开慢的解决方法
- oracle create tablespace
- struts2搭建框架及HelloWorld应用_struts2