专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »XML教程 » netframework2.0:在.NET Framework中轻松处理XML数据(3-1) »正文

netframework2.0:在.NET Framework中轻松处理XML数据(3-1)

来源: 发布时间:星期四, 2009年2月12日 浏览:97次 评论:0


带验证阅读器

XmlValidatingReader类实现了XmlReader类它提供了支持多种类型XML验证:DTDXML-Data Reduced(XDR)架构以及XSDDTD和XSD都是W3C官方推荐而XDR是Microsoft早期用于处理XML构架种格式

你可以用XmlVlidatingReader类去验证XML文档和XML片断XmlValidatingReader类工作在XML阅读器上面---是个典型XMLTextReader类例子XMLTextReade用于读取文档节点但是XmlVlidatingReader依据需要验证类型去验证每个XML块

XmlVlidatingReader类只实现了非常小XML阅读器必备个功能子集该类总是工作在个已存在XML阅读器上面它监视思路方法和属性如果你深入该类构造你会发现它很明显依靠个已存在文本阅读器带验证XML阅读器不能直接个文件或个URL序列化该类构造列表如下:

public XmlValidatingReader(XmlReader);

public XmlValidatingReader(Stream, XmlNodeType, XmlParserContext);

public XmlValidatingReader(, XmlNodeType, XmlParserContext);

带验证XML阅读器能分析任何XML片断XML片断通过或者个stream提供,也可以分析任何阅读器提供XML文档

XmlVlidatingReader类中有重大改变思路方法非常少(相对其它reader类来说)另外对 Read它有Skip和ReadTypedValue思路方法Skip思路方法跳过当前节点所有子节点(你不能跳过不良格式XML文本它是相当有用算法)Skip思路方法也验证被跳过内容ReadTypedValue思路方法返回指定 XML 架构 (XSD) 类型对应CLR类型如果该思路方法找到了XSD类型对应CLR类型则返回CLR类型名如果找不到则把该节点值作为串值返回

带验证XML阅读器正如其名它是个基于节点阅读器它验证当前节点结构是否符合当前schema验证是增量式;它没有思路方法返回表示文档是否有效布尔值通常你都是用Read思路方法去读输入XML文档实际上你也可以用带验证阅读器去读XML文档在每步中当前被访问节点结构是否和指定schema符合如果不符合抛出个异常图 4是个控制台应用它有个要输入文件名命令行最后输出验证结果

Figure 4 Console App

using ;

using .Xml;

using .Xml.Schema;



MyXmlValidApp

{

public MyXmlValidApp(String fileName)

{

try {

Validate(fileName);

}

catch (Exception e) {

Console.WriteLine(\"Error:\\t{0}\", e.Message);

Console.WriteLine(\"Exception raised: {0}\",

e.GetType.);

}

}



private void Validate(String fileName)

{

XmlTextReader xtr = XmlTextReader(fileName);

XmlValidatingReader vreader = XmlValidatingReader(xtr);

vreader.ValidationType = ValidationType.Auto;

vreader.ValidationEventHandler

ValidationEventHandler(this.ValidationEventHandle);



vreader.Read;

vreader.MoveToContent;



while (vreader.Read) {}



xtr.Close;

vreader.Close;

}



public void ValidationEventHandle(Object sender,

ValidationEventArgs args)

{

Console.Write(\"Validation error: \" + args.Message + \"\\r\\n\");

}



public void Main(String args)

{

MyXmlValidApp o = MyXmlValidApp(args[0]);

;

}

}

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: