XmlReader类非常类似于MSXML SDK中的SAX。它们最大的一个区别是SAX是一种推模型(push model),它把监控数据推入应用程序中,开发人员必须准备接受它,而XmlReader是一种拉模型(push model),它把应用程序请求的数据拉入该应用程序。这样就有一种更简单、更直观的编程模型。另一个优点是拉模型可以选择把什么数据发送给应用程序。如果不需要所有数据,就不需要处理它。而在推模型中,所有XML数据都必须由应用程序处理,无论是否需要这些数据。
下面介绍一个非常简单的示例,以读取XML数据,后面将详细介绍XmlReader类,这些代码在XmlReaderSample文件夹中。下面的代码将读取book.xml文档中的数据。在读取每个节点时,都要检查Node Type属性。如果节点时一个文本节点,就把其值追加到文本框中(代码文件XMLReaderSample.sIn)。
另一个可以使用的对象是XmlReaderSettings,它指定读取器的功能。例如,可以使用构架来验证数据流。把Schemas属性设置为一个有效的XMLSchemaSet对象,来缓存XSD构架。接着把XmlReaderSettings对象的XsdValidate属性设置为true。
有几个Ignore属性可用于控制读取器处理某些节点和值的方式。这些属性包括IgnoreComments、IgnoreIdentityConstraints、IgnoreProcessingInstructions、IgnoreSchemaLocation和Ignore Whitespace,它们可以从文档中提取某些项。
遍历文档有几种方式,如前面的示例所示,ReadO方法可以进入下一个节点。然后验证该节点是否有一个值,或者该节点是否有特性。也可以使用ReadStartElementO方法,该方法验证当前节点是否是起始元素,如果是起始元素,就可以定位到下一个节点上。如果不是起始元素,就引发一个XmIException异常。调用这个方法和调用ReadO方法后在调用IsStartElementO方法是一样的。
ReadElementStringO类似于ReadStringO,但它可以选择以元素名作为参数。如果下一个内容节点不是起始标记,或者如果Name参数不匹配当前的节点Name,就会引发异常。
在while循环中,使用MoveToContentO方法查找类型为XmINodeType.Element、名称为title的节点。我们使用XmlTextReader类的EOF属性作为循环条件。如果节点的类型不是Element,或者名称不是title else子句就会调用ReadO方法进入下一节点。当查找到一个满足条件的节点时,就把ReadElementStringO方法的结果添加到列表框中。这样就在类表框中添加一个书名。注意,在成功执行ReadElementStringO方法后,不需要调用ReadO方法,不需要调用ReadO方法,因为ReadElementStringO方法已经使用了整个Element,并定位到下一个节点上。
★关于WorkWin公司电脑监控软件★
WorkWin的使命是打造Work用途的Windows 电脑系统,有效规范员工上网行为,让老板知道员工每天在做什么(监控包括屏幕、上网在内的一举一动),限制员工不能做什么(禁止网购、游戏、优盘等)。
WorkWin基于纯软件设计,非常容易使用,无需添加或改动任何硬件,使用一台管理机监控全部员工机电脑。历经南京网亚十余年精心打造,此时此刻每天都有成千上万企业电脑正在运行WorkWin,选择WorkWin选择“赢”。
版权所有,南京网亚计算机有限公司 。本文链接地址: 使用XmlReader类推入监控数据