使用XMLReader读取XML文件
XML的读取可以通过XmlReader类来实现。XmlReader类是一个提供对XML数据的非缓存、只进行只读访问的抽象基类。该类符合W3C可扩展标记语言(XML)1.0和XML中命名空间的建议。
XmlReader类支持从流或文件读取XML数据。该类定义的方法和属性支持浏览数据并读取节点的内容,其中当前节点指的是读取器所处的节点。使用任何返回当前节点值的读取方法和属性推进读取器。XmlReader功能如下:
1、检查字符是不是合法的XML字符,元素和属性的名称是不是有效的XML名称。
2、检查XML文档的格式是否正确。
3、根据DTD或架构验证数据。
4、从XML流检索数据或使用提取模型跳过不需要的记录。
实例介绍XmlReader类的相关方法、如何对XmlReader进行设置及如何使用XmlReader验证XML文件:
using System.Xml;
class program
{
static void Main(string[ ] args)
{
string path=@ "c:\mail.xml";//xml文件路径
//尝试读取该XML文件
try
{
XmlReader myXmlReader=XmlReader.Create(path);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
}
代码只是初始化了一个XmlReader的实例,并没有做任何操作。可以看到,XmlReader的实例只能由XmlReader.Create方法创建。还有另一种方法创建XmlReader的实例,就是在XmlReader.Create方法中再加一个XmlReaderSetting参数,可以进行某些设定。一些常用的设置如下。
1、要求数据是正确格式的XML文档,如ConformanceLevel=ConformanceLevel.Document
2、要求数据是正确格式的XML已分析实体,如ConformanceLevel=ConformanceLevel.Fragment
3、需要数据针对DTD进行验证,如ProhibitDtd=false ValidationType=ValidationType.DTD
4、需要数据针对XML架构进行验证,如ValidationType=ValidationType.Schema,Schemas=要用于验证的XmlSchemaSet。
5、需要数据针对内联XML架构进行验证,如ValidationType=ValidationType.Schema,ValidationFlags |=XmlSchema ValidationFlags.ProcessInlineSchema。
6、需要类型支持,如ValidationType=ValidationType.Schema,Schemas为要使用的XmlSchemaSet。
通过以下步骤,可以实现一个新的XmlReader实例:
using System.Xml;
class program
{
static void Main(string[ ] args)
{
string path =@ "c:\mail.xml";//XML文件路径
//尝试读取该XML文件
try
{
XmlReaderSettings settings=new XmlReaderSettings();
Settings.ConformanceLevel=ConformanceLevel.Fragment;
settings.IgnoreWhitespace=true;
settings.IgnoreComments=true;
XmlReader reader=XmlReader.Create(path,settings);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
}