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();
}