c 读取xml 急急急急急急急 在线等
<?xmlversion="1.0"encoding="UTF-8"?><root><itemname="abc"age="男"aihao="打球"shengao="61...
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<item name="abc" age="男" aihao="打球" shengao="61" />
</root>
只要用c 或 c++ 读取到 男 和 打球 这俩个字符串就可以 在线等
这个文件时 utf-8的 拿他当是个普通文件也可以 只要读出他的值就可以 谢谢大家 展开
<root>
<item name="abc" age="男" aihao="打球" shengao="61" />
</root>
只要用c 或 c++ 读取到 男 和 打球 这俩个字符串就可以 在线等
这个文件时 utf-8的 拿他当是个普通文件也可以 只要读出他的值就可以 谢谢大家 展开
3个回答
展开全部
这里有详细的:http://www.infosecurity.org.cn/article/xmlsec/base/22672.html
c#来创建和读取xml文档
文章出处: 发布时间:2004-12-31 点击:0
扩展标记语言xml(extensible markup language),是由w3c组织制定的。做为用于替代html语言的一种新型的标记语言,xml内部有着很多基本标准,xml就是通过与这些相关标准地结合,应用于科学计算、电子出版、多媒体制作和电子商务的。c#作为一种新型的程序语言,是.net框架的一个重要组成部分,他和xml的关系颇深。本文就从一个方面来探讨一下这二者的关系。即:看用c#如何来创建和读取xml文档。
一. 本文程序设计和运行的软件环境:
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文档中数据的不同的结构来创建其他的数据了。
2.c#创建xml文档的第一种方法的源程序代码(no1.cs):
using system ;
using system.xml ;
class mainclass
{
xmldocument xmldoc ;
xmlnode xmlnode ;
xmlelement xmlelem ;
xmlelement xmlelem2 ;
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 ) ;
//加入另外一个元素
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文档的第二种方法:
在介绍完第一种方法以后,我想每一个读者都感觉到用c#创建xml文档是一项比较烦杂的工作了,因为不仅要了解创建的知识,还要了解文档的结构,这样创建的过程就是一步一步的了。下面就来介绍一种比较容易的创建方法,这种创建方法是直接定义xml文档,然后把他保存到文件中就可以了。
◇创建一个xml文档:
这一点和第一种方法一样,在这里就不介绍了。
◇通过"xmldocument"类中的"loadxml"方法,直接在文档中加入想要加入的xml数据。当然你加入的xml应该符合xml的语法,不然产生的文件也没有什么意义了。下面是加入xml的具体代码:
doc.loadxml (
"<employees> " +
"<no1>" +
"<name>ma jin hu</name>" +
"<zip> 239000 </zip>" +
"<address>feng huang street</address>" +
"<city>chu zhou city</city>" +
"<state> anhui </state>" +
"</no1>" +
"<no2>" +
"<name>wang tian</name>" +
"<zip> 239000 </zip>" +
"<address>lang ya street</address>" +
"<city>he fei city</city>" +
"<state> anhui </state>" +
"</no2>" +
"<no3>" +
"<name>zou wen biao</name>" +
"<zip> 100000 </zip>" +
"<address>sai di street</address>" +
"<city>bei jin city</city>" +
"<state>bei jin</state>" +
"</no3>" +
"</employees>" ) ;
把保存xml文档到文件中:
保存xml文档是通过"xmldocument"类中的"save"方法来实现的。具体如下:
doc.save ( "data.xml" ) ;
◇c#创建xml文档的第二种方法的源程序代码(no2.cs):
using system ;
using system.io ;
using system.xml;
public class sample
{
public static void main ( )
{
//创建一个xmldocument对象
xmldocument doc = new xmldocument ( ) ;
doc.loadxml (
"<employees> " +
"<no1>" +
"<name>ma jin hu</name>" +
"<zip> 239000 </zip>" +
"<address>feng huang street</address>" +
"<city>chu zhou city</city>" +
"<state> anhui </state>" +
"</no1>" +
"<no2>" +
"<name>wang tian</name>" +
"<zip> 239000 </zip>" +
"<address>lang ya street</address>" +
"<city>he fei city</city>" +
"<state> anhui </state>" +
"</no2>" +
"<no3>" +
"<name>zou wen biao</name>" +
"<zip> 100000 </zip>" +
"<address>sai di street</address>" +
"<city>bei jin city</city>" +
"<state>bei jin</state>" +
"</no3>" +
"</employees>" ) ;
//保存这个文档到文件中
doc.save ( "data.xml" ) ;
}
}
用c#创建xml文档的方法其实有很多,在这里只是选取了二种比较典型的方法加以介绍。但无论那一种方法,c#在创建xml的时候都需要用到.net framework sdk。所以了解并掌握这个类库中的内容对于c#编程是十分必要的,在下面我们将来介绍一下用c#读取xml中的数据,通过这你会发现,c#又是利用这个类库实现这个功能的。
三.c#读取xml文件:
本节将用c#来读取本文中用第二种方法创建的xml文件,编译no2.cs后,执行将产生"data.xml"文件,其中"data.xml"文件的数据结构如下:
<employees>
<no1>
<name>ma jin hu</name>
<zip> 239000 </zip>
<address>feng huang street</address>
<city>chu zhou city</city>
<state> anhui </state>
</no1>
<no2>
<name>wang tian</name>
<zip> 239000 </zip>
<address>lang ya street</address>
<city>he fei city</city>
<state> anhui </state>
</no2>
<no3>
<name>zou wen biao</name>
<zip> 100000 </zip>
<address>sai di street</address>
<city>bei jin city</city>
<state>bei jin</state>
</no3>
</employees>
在下面的内容中,我们利用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中的实现代码,其中listview1是已经创建listview组件:
while ( reader.read ( ) )
{
//判断当前读取得节点类型
switch ( reader.nodetype )
{
case xmlnodetype.element :
s = reader.name ;
break ;
case xmlnodetype.text :
if ( s.equals ( "name" ) )
myitem = listview1.items.add ( reader.value ) ;
else
myitem.subitems.add ( reader.value ) ;
break ;
}
}
四.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 form1 : form
{
private button button1 ;
private listview listview1 ;
private system.componentmodel.container components = null ;
public form1 ( )
{
//初始化窗体中的各个组件
initializecomponent ( ) ;
}
//清除程序中使用过的资源
protected override void dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.dispose ( ) ;
}
}
base.dispose ( disposing ) ;
}
private void initializecomponent ( )
{
button1 = new button ( ) ;
listview1 = new listview ( ) ;
suspendlayout ( ) ;
button1.anchor = ( ( anchorstyles.bottom | anchorstyles.left )
| anchorstyles.right ) ;
button1.location = new point ( 240 , 296 ) ;
button1.name = "button1" ;
button1.size = new size ( 112 , 37 ) ;
button1.tabindex = 0 ;
button1.text = "读取xml文档" ;
button1.click += new system.eventhandler ( button1_click ) ;
listview1.anchor = ( ( ( anchorstyles.top | anchorstyles.bottom )
| anchorstyles.left )
| anchorstyles.right ) ;
listview1.gridlines = true ;
listview1.location = new point ( 10 , 9 ) ;
listview1.name = "listview1" ;
listview1.size = new size ( 623 , 269 ) ;
listview1.tabindex = 1 ;
listview1.view = view.details ;
this.autoscalebasesize = new size ( 6 , 14 ) ;
this.clientsize = new 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 ) ;
}
static void main ( )
{
application.run ( new form1 ( ) ) ;
}
private void button1_click ( object sender , system.eventargs e )
{
listviewitem myitem = new 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
{
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 = listview1.items.add ( reader.value ) ;
else
myitem.subitems.add ( reader.value ) ;
break ;
}
}
}
finally
{
//清除打开的数据流
if ( reader != null )
reader.close ( ) ;
}
}
}
五.总结:
c#和xml的渊源是很深的,本文只是从一个侧面反映了二者关系的密切程度。在.net framework sdk中存在许多可以直接操作xml的类库,掌握这些类库的使用方法,对用c#开发和xml相关程序是十分必要的。
c#来创建和读取xml文档
文章出处: 发布时间:2004-12-31 点击:0
扩展标记语言xml(extensible markup language),是由w3c组织制定的。做为用于替代html语言的一种新型的标记语言,xml内部有着很多基本标准,xml就是通过与这些相关标准地结合,应用于科学计算、电子出版、多媒体制作和电子商务的。c#作为一种新型的程序语言,是.net框架的一个重要组成部分,他和xml的关系颇深。本文就从一个方面来探讨一下这二者的关系。即:看用c#如何来创建和读取xml文档。
一. 本文程序设计和运行的软件环境:
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文档中数据的不同的结构来创建其他的数据了。
2.c#创建xml文档的第一种方法的源程序代码(no1.cs):
using system ;
using system.xml ;
class mainclass
{
xmldocument xmldoc ;
xmlnode xmlnode ;
xmlelement xmlelem ;
xmlelement xmlelem2 ;
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 ) ;
//加入另外一个元素
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文档的第二种方法:
在介绍完第一种方法以后,我想每一个读者都感觉到用c#创建xml文档是一项比较烦杂的工作了,因为不仅要了解创建的知识,还要了解文档的结构,这样创建的过程就是一步一步的了。下面就来介绍一种比较容易的创建方法,这种创建方法是直接定义xml文档,然后把他保存到文件中就可以了。
◇创建一个xml文档:
这一点和第一种方法一样,在这里就不介绍了。
◇通过"xmldocument"类中的"loadxml"方法,直接在文档中加入想要加入的xml数据。当然你加入的xml应该符合xml的语法,不然产生的文件也没有什么意义了。下面是加入xml的具体代码:
doc.loadxml (
"<employees> " +
"<no1>" +
"<name>ma jin hu</name>" +
"<zip> 239000 </zip>" +
"<address>feng huang street</address>" +
"<city>chu zhou city</city>" +
"<state> anhui </state>" +
"</no1>" +
"<no2>" +
"<name>wang tian</name>" +
"<zip> 239000 </zip>" +
"<address>lang ya street</address>" +
"<city>he fei city</city>" +
"<state> anhui </state>" +
"</no2>" +
"<no3>" +
"<name>zou wen biao</name>" +
"<zip> 100000 </zip>" +
"<address>sai di street</address>" +
"<city>bei jin city</city>" +
"<state>bei jin</state>" +
"</no3>" +
"</employees>" ) ;
把保存xml文档到文件中:
保存xml文档是通过"xmldocument"类中的"save"方法来实现的。具体如下:
doc.save ( "data.xml" ) ;
◇c#创建xml文档的第二种方法的源程序代码(no2.cs):
using system ;
using system.io ;
using system.xml;
public class sample
{
public static void main ( )
{
//创建一个xmldocument对象
xmldocument doc = new xmldocument ( ) ;
doc.loadxml (
"<employees> " +
"<no1>" +
"<name>ma jin hu</name>" +
"<zip> 239000 </zip>" +
"<address>feng huang street</address>" +
"<city>chu zhou city</city>" +
"<state> anhui </state>" +
"</no1>" +
"<no2>" +
"<name>wang tian</name>" +
"<zip> 239000 </zip>" +
"<address>lang ya street</address>" +
"<city>he fei city</city>" +
"<state> anhui </state>" +
"</no2>" +
"<no3>" +
"<name>zou wen biao</name>" +
"<zip> 100000 </zip>" +
"<address>sai di street</address>" +
"<city>bei jin city</city>" +
"<state>bei jin</state>" +
"</no3>" +
"</employees>" ) ;
//保存这个文档到文件中
doc.save ( "data.xml" ) ;
}
}
用c#创建xml文档的方法其实有很多,在这里只是选取了二种比较典型的方法加以介绍。但无论那一种方法,c#在创建xml的时候都需要用到.net framework sdk。所以了解并掌握这个类库中的内容对于c#编程是十分必要的,在下面我们将来介绍一下用c#读取xml中的数据,通过这你会发现,c#又是利用这个类库实现这个功能的。
三.c#读取xml文件:
本节将用c#来读取本文中用第二种方法创建的xml文件,编译no2.cs后,执行将产生"data.xml"文件,其中"data.xml"文件的数据结构如下:
<employees>
<no1>
<name>ma jin hu</name>
<zip> 239000 </zip>
<address>feng huang street</address>
<city>chu zhou city</city>
<state> anhui </state>
</no1>
<no2>
<name>wang tian</name>
<zip> 239000 </zip>
<address>lang ya street</address>
<city>he fei city</city>
<state> anhui </state>
</no2>
<no3>
<name>zou wen biao</name>
<zip> 100000 </zip>
<address>sai di street</address>
<city>bei jin city</city>
<state>bei jin</state>
</no3>
</employees>
在下面的内容中,我们利用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中的实现代码,其中listview1是已经创建listview组件:
while ( reader.read ( ) )
{
//判断当前读取得节点类型
switch ( reader.nodetype )
{
case xmlnodetype.element :
s = reader.name ;
break ;
case xmlnodetype.text :
if ( s.equals ( "name" ) )
myitem = listview1.items.add ( reader.value ) ;
else
myitem.subitems.add ( reader.value ) ;
break ;
}
}
四.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 form1 : form
{
private button button1 ;
private listview listview1 ;
private system.componentmodel.container components = null ;
public form1 ( )
{
//初始化窗体中的各个组件
initializecomponent ( ) ;
}
//清除程序中使用过的资源
protected override void dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.dispose ( ) ;
}
}
base.dispose ( disposing ) ;
}
private void initializecomponent ( )
{
button1 = new button ( ) ;
listview1 = new listview ( ) ;
suspendlayout ( ) ;
button1.anchor = ( ( anchorstyles.bottom | anchorstyles.left )
| anchorstyles.right ) ;
button1.location = new point ( 240 , 296 ) ;
button1.name = "button1" ;
button1.size = new size ( 112 , 37 ) ;
button1.tabindex = 0 ;
button1.text = "读取xml文档" ;
button1.click += new system.eventhandler ( button1_click ) ;
listview1.anchor = ( ( ( anchorstyles.top | anchorstyles.bottom )
| anchorstyles.left )
| anchorstyles.right ) ;
listview1.gridlines = true ;
listview1.location = new point ( 10 , 9 ) ;
listview1.name = "listview1" ;
listview1.size = new size ( 623 , 269 ) ;
listview1.tabindex = 1 ;
listview1.view = view.details ;
this.autoscalebasesize = new size ( 6 , 14 ) ;
this.clientsize = new 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 ) ;
}
static void main ( )
{
application.run ( new form1 ( ) ) ;
}
private void button1_click ( object sender , system.eventargs e )
{
listviewitem myitem = new 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
{
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 = listview1.items.add ( reader.value ) ;
else
myitem.subitems.add ( reader.value ) ;
break ;
}
}
}
finally
{
//清除打开的数据流
if ( reader != null )
reader.close ( ) ;
}
}
}
五.总结:
c#和xml的渊源是很深的,本文只是从一个侧面反映了二者关系的密切程度。在.net framework sdk中存在许多可以直接操作xml的类库,掌握这些类库的使用方法,对用c#开发和xml相关程序是十分必要的。
展开全部
那个c++还没读取出来么?没读取的话加下我,或者直接
只要你可以导入xml命名空间,就可以用下面的方法。
XmlDocument xml = new XmlDocument();
xml.Load("xml文件的路径");
XmlNode xmlnode = xml.SelectSingleNode("tem");
string age = xmlnode.Attributes["age"].Value;
string aihao = xmlnode.Attributes["aihao"].Value;
看看这个
读取的d.xml为
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<node1 a="10">aaaaa</node1>
<node2 b="20">bbbbb</node2>
</root>
目的为取出其它的 b的值和node2的属性值
OK,开工
#include <iostream>
#include <libxml/parser.h>
int main(int argc, char *argv[])
{
xmlDocPtr doc; //定义解析文档指针
xmlNodePtr curNode; //定义结点指针(你需要它为了在各个结点间移动)
xmlChar *szKey; //临时字符串变量
char szDocName[] = "d.xml";
using std::string;
using std::cout;
using std::endl;
doc = xmlReadFile(szDocName,"UTF-8",XML_PARSE_RECOVER); //解析文件
//检查解析文档是否成功,如果不成功,libxml将指一个注册的错误并停止。
//一个常见错误是不适当的编码。XML标准文档除了用UTF-8或UTF-16外还可用其它编码保存。
//如果文档是这样,libxml将自动地为你转换到UTF-8。更多关于XML编码信息包含在XML标准中.
if (NULL == doc)
{
//文档打开错误
return -1;
}
curNode = xmlDocGetRootElement(doc); //确定文档根元素
/*检查确认当前文档中包含内容*/
if (NULL == curNode)
{
//空得xml文件
xmlFreeDoc(doc);
return -2;
}
/*在这个例子中,我们需要确认文档是正确的类型。“root”是在这个示例中使用文档的根类型。*/
if (xmlStrcmp(curNode->name, BAD_CAST "root"))
{
//分析根元素失败
xmlFreeDoc(doc);
return -3;
}
curNode = curNode->xmlChildrenNode;
xmlNodePtr propNodePtr = curNode;
while(curNode != NULL)
{
//取出节点中的内容
if ((!xmlStrcmp(curNode->name, (const xmlChar *)"node2")))
{
szKey = xmlNodeGetContent(curNode);
cout << szKey << endl; //得到node2的值并输出
xmlFree(szKey);
}
//查找带有属性attribute的节点
if (xmlHasProp(curNode,BAD_CAST "b"))
{
propNodePtr = curNode;
}
curNode = curNode->next;
}
//查找属性
xmlAttrPtr attrPtr = propNodePtr->properties;
while (attrPtr != NULL)
{
if (!xmlStrcmp(attrPtr->name, BAD_CAST "b"))
{
xmlChar* szAttr = xmlGetProp(propNodePtr,BAD_CAST "b");
cout << szAttr << endl; //找到b的属性并输出
xmlFree(szAttr);
}
attrPtr = attrPtr->next;
}
xmlFreeDoc(doc);
return 0;
}
只要你可以导入xml命名空间,就可以用下面的方法。
XmlDocument xml = new XmlDocument();
xml.Load("xml文件的路径");
XmlNode xmlnode = xml.SelectSingleNode("tem");
string age = xmlnode.Attributes["age"].Value;
string aihao = xmlnode.Attributes["aihao"].Value;
看看这个
读取的d.xml为
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<node1 a="10">aaaaa</node1>
<node2 b="20">bbbbb</node2>
</root>
目的为取出其它的 b的值和node2的属性值
OK,开工
#include <iostream>
#include <libxml/parser.h>
int main(int argc, char *argv[])
{
xmlDocPtr doc; //定义解析文档指针
xmlNodePtr curNode; //定义结点指针(你需要它为了在各个结点间移动)
xmlChar *szKey; //临时字符串变量
char szDocName[] = "d.xml";
using std::string;
using std::cout;
using std::endl;
doc = xmlReadFile(szDocName,"UTF-8",XML_PARSE_RECOVER); //解析文件
//检查解析文档是否成功,如果不成功,libxml将指一个注册的错误并停止。
//一个常见错误是不适当的编码。XML标准文档除了用UTF-8或UTF-16外还可用其它编码保存。
//如果文档是这样,libxml将自动地为你转换到UTF-8。更多关于XML编码信息包含在XML标准中.
if (NULL == doc)
{
//文档打开错误
return -1;
}
curNode = xmlDocGetRootElement(doc); //确定文档根元素
/*检查确认当前文档中包含内容*/
if (NULL == curNode)
{
//空得xml文件
xmlFreeDoc(doc);
return -2;
}
/*在这个例子中,我们需要确认文档是正确的类型。“root”是在这个示例中使用文档的根类型。*/
if (xmlStrcmp(curNode->name, BAD_CAST "root"))
{
//分析根元素失败
xmlFreeDoc(doc);
return -3;
}
curNode = curNode->xmlChildrenNode;
xmlNodePtr propNodePtr = curNode;
while(curNode != NULL)
{
//取出节点中的内容
if ((!xmlStrcmp(curNode->name, (const xmlChar *)"node2")))
{
szKey = xmlNodeGetContent(curNode);
cout << szKey << endl; //得到node2的值并输出
xmlFree(szKey);
}
//查找带有属性attribute的节点
if (xmlHasProp(curNode,BAD_CAST "b"))
{
propNodePtr = curNode;
}
curNode = curNode->next;
}
//查找属性
xmlAttrPtr attrPtr = propNodePtr->properties;
while (attrPtr != NULL)
{
if (!xmlStrcmp(attrPtr->name, BAD_CAST "b"))
{
xmlChar* szAttr = xmlGetProp(propNodePtr,BAD_CAST "b");
cout << szAttr << endl; //找到b的属性并输出
xmlFree(szAttr);
}
attrPtr = attrPtr->next;
}
xmlFreeDoc(doc);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接当做文本文档来读取
然后判断字符串是否是‘男’ 是否是打球 就OK啦
然后判断字符串是否是‘男’ 是否是打球 就OK啦
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询