您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

详解读写XML文件的代码案例

2024/11/27 7:03:20发布26次查看
本文将会涉及3个方面的内容:
        1.存取xml文件
        2.xml文档对象模型
        3.xml和dataset
这里我们先介绍操作xml文件的两个对象:xmltextreader和xmltextwriter
        打开和读取xml文件使用到的对象就是xmltextreader对象。下面的例子打开了与程序在同一路径下的一个例子文件sample.xml
xmltextreader reader = new xmltextreader("sample.xml");
然后我们可以通过其read方法实现自动便利xml文件。例:
while(reader.read()) { //在这里填写对于xml的操作代码 }
下面我们看一个复杂一些的例子。
while(reader.read()) 2{ 3 switch(reader.nodetype) 4 { 5 case xmlnodetype.element: //当前节点是一个元素 6 console.write("<" + reader.name); 7 while(reader.movetonextattribute()) //按照顺序读取下一个属性 8 console.write(" " + reader.name + "='" + reader.value + "'"); 9 console.write(">"); 10 break; 11 case xmlnodetype.documenttype: //xml文件的类型声明 12 console.writeline(reader.nodetype + "<" + reader.name + ">" + reader.value); 13 break; 14 …… 15 } 16 }
从第3行开始我们就根据nodetype属性去判断节点的类型,根据节点的不同类型进行不同的处理。
下表列出了一些常用的节点类型。
xmltextreader的nodetype的取值
类型
说明
all
所有节点
attribute
一个属性
cdata
转义那些会被看作标记语言(如html)的文本
comment
使用<!—和-->分隔的注释
document
xml数据树的根节点
documenttype
文档的类型声明,即<!doctype…>标记
element
一个元素,通常是xml文件中的实际数据
endtag
元素的结束位置
none
不是节点
text
返回元素的文本内容
xmldeclaration
xml声明节点,例如<?xml version=’
在进行写入xml文件时我们使用的xmltextwriter类,它是xmlwriter的子类,速度快且不使用缓存,但是同xmltextreader一样,在写入xml文件时只能向前。
我们假定要写入的xml文件在c盘根目录下:
xmltextwriter writer = new xmltextwriter("c:\\sample2.xml",null);
在这里如果不想把数据写入文件,而只是想在命令窗口显示,则可以把“console.out”作为参数传递给构造器,此时应把上述语句改为:
xmltextwriter writer = new xmltextwriter(console.out);
下面我们介绍一下写入xml文件数据的一些常用方法:
xmltextwriter的常用方法
方法
说明
用法
writestartdocument
写xml声明部分,即“<?xml version=”?>”
writer.writestartdocument();
writeenddocument
使没有闭合元素闭合
writer.writeenddocument();
writedoctype
写doctype声明
writer.writedoctype("sample2",null,null,"<!entity h 'hardcover'>");
writestartelement
写元素的开始标志
writer.writestartelement("sample2");
writeendelement
写元素的结束标志
writer.writeendelement();
writestring
写入字符串
writer.writestring("pride and prejudice");
writecdata
写cdata块,即写入的文字在<![cdata[…]]>间
writer.writecdata("price 15% off!!");
writeraw
手工写入一行,不作任何处理
writer.writeraw("this & that");
writeentityref
写入实体引用,即前面加“&”后面加“;”
writer.writeentityref("h");
writeprocessinginstruction
写入处理指令,即前面加“<?”后面加“?>”
writer.writeprocessinginstruction("xml-stylesheet",pitext);
writecomment
写入注释,自动加入注释标志“<!--”和“à”
writer.writecomment("sample xml");
flush
把缓存中的内容写入文件
writer.flush();
close
关闭,如有未闭合的元素,自动闭合
writer.close();
其中writestring方法会对字符串进行下述处理:
1.字符“&”、“<”和“>”转化为“&amp;”、“&lt;”和“&gt;”。
2.ascii码为0~(十六进制)的字符转化为“&#~“&#”。
3.如果是在写属性的值则双引号“””转化为“&quot;”;单引号 “’”转化为“&apos;”。
下面给大家写出一个例程,由于注释比较详细就不作过多解释了。
using system; 2using system.io; 3using system.xml; 4 5public class sample 6{ 7 private const string filename = "sampledata.xml"; 8 9 public static void main() 10 { 11 xmltextwriter writer = null; 12 13 writer = new xmltextwriter (filename, null); 14 //为使文件易读,使用缩进 15 writer.formatting = formatting.indented; 16 17 //写xml声明 18 writer.writestartdocument(); 19 20 //引用样式 21 string pitext="type='text/xsl' href='book.xsl'"; 22 writer.writeprocessinginstruction("xml-stylesheet", pitext); 23 24 //write the documenttype node 25 writer.writedoctype("book", null , null, "<!entity h 'hardcover'>"); 26 27 //写入注释 28 writer.writecomment("sample xml"); 29 30 //写一个元素(根元素) 31 writer.writestartelement("book"); 32 33 // genre 属性 34 writer.writeattributestring("genre", "novel"); 35 36 // isbn 属性 37 writer.writeattributestring("isbn", "1-8630-014"); 38 39 //书名元素 40 writer.writeelementstring("title", "the handmaid's tale"); 41 42 //write the style element 43 writer.writestartelement("style"); 44 writer.writeentityref("h"); 45 writer.writeendelement(); 46 47 //价格元素 48 writer.writeelementstring("price", "19.95"); 49 50 //写入 cdata 51 writer.writecdata("prices 15% off!!"); 52 53 //关闭根元素 54 writer.writeendelement(); 55 56 writer.writeenddocument(); 57 58 //缓冲器内的内容写入文件 59 writer.flush(); 60 writer.close(); 61 62 63 xmldocument doc = new xmldocument(); 64 65 doc.preservewhitespace = true; 66 //加载文件 67 doc.load(filename); 68 69 //xml文件的内容显示在控制台 70 console.write(doc.innerxml); 71 //等待用户阅读 72 console.in.read(); 73 } 74}
以上就是详解读写xml文件的代码案例的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product