读取xml文档:C#来创建和读取XML文档

  扩展标记语言XML(eXtensible Markup Language)是由W3C组织制定做为用于替代HTML语言种新型标记语言XML内部有着很多基本标准XML就是通过和这些相关标准地结合应用于科学计算、电子出版、多媒体制作和电子商务C#作为种新型语言是.Net框架个重要组成部分他和XML关系颇深本文就从个方面来探讨下这 2者关系即:看用C#如何来创建和读取XML文档

  .本文设计和运行软件Software环境

  ()微软公司视窗2000服务器版

  ( 2).Net FrameWork SDK Beta 2

   2.C#创建XML文档

  在本文中我们来介绍下用C#创建XML文档 2种思路方法这 2种思路方法各有千秋种创建起来更灵活第 2种创建起来更方便

  ()C#创建XML文档种思路方法

  这种思路方法是按照按照XML结构构建XML文档C#构建XML文档通过.Net FrameWork SDK中命名空间“.Xml”中封装各种类来实现下面就按照个XML典型文档结构来介绍

  (1)首先要创建个空XML文档

  在命名空间“.Xml”中有个类“XmlDocument”C#通过这个类来描述XML文档下面是用C#创建个XML文档

xmldoc = .Xml.XmlDocument ( ) ;  (2)在XML文档最头部加入XML声明段落

  利用“XmlDocument”类中“CreateNode”思路方法可以创建个指定类型XML节点“CreateNode”思路方法思路方法总共有 3种在本文中使用是其思路方法具体语法如下:

  XmlDocument.CreateNode Method ( XmlNodeType , String , String )

  然后在利用“XmlDocument”类中“AppendChild”思路方法在XML文档中加入此节点用C#在XML文档中加入声明段落实现语句如下:

xmlnode = xmldoc.CreateNode ( XmlNodeType.XmlDeclaration , "" , "" ) ;
xmldoc.AppendChild ( xmlnode ) ;
  (3)为XML文档加入元素(element)

  加入数据内容是通过元素在“XmlDocument”类中提供了 2个思路方法:

  “CreateElement"和"CreateTextNode”其中第个思路方法是在XML中创建个元素另外个思路方法是为创建元素指定文本值下面是为上面创建XML文档加入个根元素

xmlelem = xmldoc.CreateElement ( "" , "ROOT" , "" ) ;
xmltext = xmldoc.CreateTextNode ( "Root Text" ) ;
  注释:其中“xmlelem”是创建“XmlElement”对象“xmltext”是“XmlText”对象有了创建个XML元素例子就可以根据XML文档中数据区别结构来创建其他数据了

  ( 2)C#创建XML文档种思路方法代码(NO1.cs)

using ;
using .Xml ;
MainClass
{
XmlDocument xmldoc ;
XmlNode xmlnode ;
XmlElement xmlelem ;
XmlElement xmlelem2 ;
XmlText xmltext ;
void Main ( [ ] args )
{
MainClass app = MainClass ( ) ;
}
public MainClass ( )
{
xmldoc = 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 ) ;
//加入另外个元素
xmlelem2 = xmldoc.CreateElement ("SampleElement" ) ;
xmlelem2 = xmldoc.CreateElement ( "" , "SampleElement" , "" ) ;
xmltext = xmldoc.CreateTextNode ( "The text of the sample element" ) ;
xmlelem2.AppendChild ( xmltext ) ;
xmldoc.ChildNodes.Item(1).AppendChild ( xmlelem2 ) ;
//保存创建好XML文档
try
{
xmldoc.Save ( "c:data.xml" ) ;
}
catch ( Exception e )
{
//显示信息
Console.WriteLine ( e.Message ) ;
}
Console.ReadLine ( ) ;
}
} 
  ( 3)C#创建XML文档第 2种思路方法

  在介绍完第种思路方法以后我想每个读者都感觉到用C#创建XML文档是项比较烦杂工作了不仅要了解创建知识还要了解文档结构这样创建过程就是下面就来介绍种比较容易创建思路方法这种创建思路方法是直接定义XML文档然后把他保存到文件中就可以了

  (1)创建个XML文档

  这点和第种思路方法在这里就不介绍了

  (2)通过“XmlDocument”类中“LoadXml”思路方法直接在文档中加入想要加入XML数据当然你加入XML应该符合XML语法不然产生文件也没有什么意义了下面是加入XML具体代码:

doc.LoadXml (
" " +
"" +
"Ma Jin Hu" +
" 239000 " +
"
Feng Huang Street" +
"Chu Zhou City" +
" ANHUI " +
"" +
"" +
"Wang Tian" +
" 239000 " +
"Lang Ya Street" +
"He Fei City" +
" ANHUI " +
"" +
"" +
"Zou Wen Biao" +
" 100000 " +
"Sai Di Street" +
"Bei Jin City" +
"Bei Jin" +
"" +
"" ) ;
  (3)把保存XML文档到文件中

  保存XML文档是通过“XmlDocument”类中“Save”

  思路方法来实现具体如下:

doc.Save ( "data.xml" ) ;  ( 4)C#创建XML文档第 2种思路方法代码(NO2.cs)

using ;
using .IO ;
using .Xml;
public Sample
{
public void Main ( )
{
//创建个XmlDocument对象
XmlDocument doc = XmlDocument ( ) ;
doc.LoadXml (
" " +
"" +
"Ma Jin Hu" +
" 239000 " +
"
Feng Huang Street" +
"Chu Zhou City" +
" ANHUI " +
"" +
"" +
"Wang Tian" +
" 239000 " +
"Lang Ya Street" +
"He Fei City" +
" ANHUI " +
"" +
"" +
"Zou Wen Biao" +
" 100000 " +
"Sai Di Street" +
"Bei Jin City" +
"Bei Jin" +
"" +
"" ) ;
//保存这个文档到文件中
doc.Save ( "data.xml" ) ;
}
}
  用C#创建XML文档思路方法其实有很多在这里只是选取了 2种比较典型思路方法加以介绍但无论那种思路方法C#在创建XML时候都需要用到.Net FrameWork SDK所以了解并掌握这个类库中内容对于C#编程是十分必要在下面我们将来介绍下用C#读取XML中数据通过这你会发现C#又是利用这个类库实现这个功能

   3.C#读取XML文件

  本节将用C#来读取本文中用第 2种思路方法创建XML文件编译NO2.cs后执行将产生“data.xml”文件其中“data.xml”文件数据结构如下:

Ma Jin Hu
239000
Feng Huang Street
Chu Zhou City
ANHUI
Wang Tian
239000
Lang Ya Street
He Fei City
ANHUI
Zou Wen Biao
100000
Sai Di Street
Bei Jin City
Bei Jin
  在下面内容中我们利用C#读取此文件并用ListView组件按照数据结构给显示出来

  要正确读取XML数据首先要了解XML结构根据上面XML文件可以知道此XML包含 3个数据下面就来看如何读取这 3条数据:

  (1)装入XML文件形成数据流

  通过创建个“XmlDocument”对象然后利用“load”思路方法可以把XML文件装入具体如下:

XmlDocument doc = XmlDocument ( ) ;
// 装入指定XML文档
doc.Load ( "C:data.xml" ) ; 
  (2)读取XML文件并显示出来

  读取XML是通过创建“XmlNodeReader”对象来实现“XmlNodeReader”对象主要是用来可以读取XML节点数据在本文中使用到了些“XmlNodeReader”属性譬如“NodeType”属性用来判断读取得节点是什么类型“Value”是节点下面是读取XML文件并显示在ListView中实现代码其中listview1是已经创建ListView组件:

while ( reader.Read ( ) )
{
//判断当前读取得节点类型
switch ( reader.NodeType )
{
XmlNodeType.Element :
s = reader.Name ;
;
XmlNodeType.Text :
( s.Equals ( "Name" ) )
myItem = Listview1.Items.Add ( reader.Value ) ;

myItem.SubItems.Add ( reader.Value ) ;
;
}
} 
   4.C#读取XML文件代码(read.cs)

  在了解了上面内容以后

  可以得到用C#读取指定XML文件完整代码具体如下:

using ;
using .Drawing ;
using .Collections ;
using .ComponentModel ;
using .Windows.Forms ;
using .Data ;
using .Xml ;
public Form1 : Form
{
private Button button1 ;
private ListView Listview1 ;
private .ComponentModel.Container components = null ;
public Form1 ( )
{
//化窗体中各个组件
InitializeComponent ( ) ;
}
//清除中使用过资源
protected override void Dispose ( bool disposing )
{
( disposing )
{
( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}
private void InitializeComponent ( )
{
button1 = Button ( ) ;
Listview1 = ListView ( ) ;
SuspendLayout ( ) ;
button1.Anchor = ( ( AnchorStyles.Bottom | AnchorStyles.Left )
| AnchorStyles.Right ) ;
button1.Location = Po ( 240 , 296 ) ;
button1.Name = "button1" ;
button1.Size = Size ( 112 , 37 ) ;
button1.TabIndex = 0 ;
button1.Text = "读取XML文档" ;
button1.Click .EventHandler ( button1_Click ) ;
Listview1.Anchor = ( ( ( AnchorStyles.Top | AnchorStyles.Bottom )
| AnchorStyles.Left )
| AnchorStyles.Right ) ;
Listview1.GridLines = true ;
Listview1.Location = Po ( 10 , 9 ) ;
Listview1.Name = "Listview1" ;
Listview1.Size = Size ( 623 , 269 ) ;
Listview1.TabIndex = 1 ;
Listview1.View = View.Details ;
this.AutoScaleBaseSize = Size ( 6 , 14 ) ;
this.ClientSize = Size ( 608 , 348 ) ;
this.Controls.Add ( Listview1 );
this.Controls.Add ( button1 );
this.Name = "Form1" ;
this.StartPosition = FormStartPosition.CenterScreen ;
this.Text = "用C#来读取XML文档" ;
this.ResumeLayout ( false ) ;
}
void Main ( )
{
Application.Run ( Form1 ( ) ) ;
}
private void button1_Click ( object sender , .EventArgs e )
{
ListViewItem myItem = ListViewItem ( ) ;
// 构建listview组件
Listview1.Columns.Clear ( ) ;
Listview1.Items.Clear ( ) ;
Listview1.Columns.Add ( "Name" , 80 , HorizontalAlignment.Left ) ;
Listview1.Columns.Add ( "Zip" , 80 , HorizontalAlignment.Left ) ;
Listview1.Columns.Add ( "Address" , 80 , HorizontalAlignment.Left ) ;
Listview1.Columns.Add ( "City" , 80 , HorizontalAlignment.Left ) ;
Listview1.Columns.Add ( "State" , 80 , HorizontalAlignment.Left ) ;
XmlNodeReader reader = null ;
try
{
s = "" ;
XmlDocument doc = XmlDocument ( ) ;
// 装入指定XML文档
doc.Load ( "C:data.xml" ) ;
// 设定XmlNodeReader对象来打开XML文件
reader = XmlNodeReader ( doc ) ;
// 读取XML文件中数据并显示出来
while ( reader.Read ( ) )
{
//判断当前读取得节点类型
switch ( reader.NodeType )
{
XmlNodeType.Element :
s = reader.Name ;
;
XmlNodeType.Text :
( s.Equals ( "Name" ) )
myItem = Listview1.Items.Add ( reader.Value ) ;

myItem.SubItems.Add ( reader.Value ) ;
;
}
}
}
finally
{
//清除打开数据流
( reader != null )
reader.Close ( ) ;
}
}
}  
   5.整理总结



  C#和XML渊源是很深本文只是从个侧面反映了 2者关系密切程度在.Net FrameWork SDK中存在许多可以直接操作XML类库掌握这些类库使用思路方法对用C#开发和XML相关是十分必要



Tags:  如何创建pdf文档 word无法读取文档 创建一个xml文档 读取xml文档

延伸阅读

最新评论

发表评论