日期:2014-05-19  浏览次数:20877 次

求一个用XmlReader读XML字符串的例子
谢谢.
请给代码示范.

------解决方案--------------------
System.Xml命名空间包含了一些最重要的XML类,其中最主要的类是和XML文档的读写操作相关的类。这些类中包括4个与读相关的类以及2个与写相关的类。它们分别是:XmlReader、XmlTextReader、XmlValidatingReader、XmlNodeReader、XmlWriter以及 XmlTextWriter。


XmlReader类是一个虚基类,它包含了读XML文档的方法和属性。该类中的Read方法是一个基本的读XML文档的方法,它以流形式读取XML文档中的节点(Node)。另外,该类还提供了ReadString、ReadInnerXml、ReadOuterXml和ReadStartElement等更高级的读方法。除了提供读XML文档的方法外,XmlReader类还为程序员提供了MoveToAttribute、MoveToFirstAttribute、MoveToContent、MoveToFirstContent、MoveToElement以及 MoveToNextAttribute等具有导航功能的方法。


  XmlTextReader、XmlNodeReader以及XmlValidatingReader等类是从XmlReader类继承过来的子类。根据它们的名称,我们可以知道其作用分别是读取文本内容、读取节点和读取XML模式(Schemas)。

使用XmlTextReader

XmlTextReader reader=null;

try
{
string Fpath=Server.MapPath( "menu.xml ");

reader=new XmlTextReader(Fpath);

while(reader.Read())
{
if(reader.NodeType==XmlNodeType.Element)
{
if(reader.LocalName== "item ")
{
while(reader.Read())
{
if(reader.NodeType==XmlNodeType.Element)
{
switch(reader.Name)
{
case "message ":
Response.Write(reader.ReadElementString());
Response.Write( ": ");
continue;
case "submenu ":
Response.Write(reader.ReadElementString());
Response.Write( ": ");
continue;
case "u ":
Response.Write(reader.ReadElementString());
Response.Write( " <br> ");
break;
}
}
}
}
}
}
}
finally{
   if(reader!=null)
   reader.Close();
   }


使用XmlNodeReader


XmlNodeReader reader=null;

try
{
string Fpath=Server.MapPath( "menu.xml ");
XmlDocument doc=new XmlDocument();

doc.Load(Fpath);


reader=new XmlNodeReader(doc);
if (reader.HasAttributes)
{
for (int i = 0; i < reader.AttributeCount; i++)
{
reader.MoveToAttribute(i);
//Response.Write(reader.Name);
if(reader.Name== "value ")
{
Response.Write( ": ");
Response.Write(reader.Value);
}
Response.Write( " <br> ");
}
}
}

finally{
   if(reader!=null)
   reader.Close();
   }





------解决方案--------------------
using System;
using System.IO;
using System.Xml;

public class Sample {

private const String filename = "items.xml ";

public static void Main() {

XmlTextReader reader = null;

try {

// Load the reader with the data file and ignore all white space nodes.
reader = new XmlTextReader(filename);
reader.WhitespaceHandling = WhitespaceHandling.None;

// Parse the file and display each of the nodes.
while (reader.Read()) {
switch (reader.NodeType) {
case XmlNodeType.Element:
Console.Write( " <{0}> &