c#怎么读取xml判断节点是否存在子节点?

本文介绍了C#中使用XmlReader,只读、向前、循环读取XML节点的方法,并为我们列出、XmlReader类的方法、属性、枚举等成员,希望对大家学习有所帮助。

XmlReader通过向前读取文档并识别读取到的元素,为我们提供了一种消耗资源最少的方式来解析XML数据。很多时候我们都是利用XmlReader来对XML文件的数据有效性进行验证(使用XmlReader实例的Read()方法依次读取所有节点,以此判断是否与符合指定的模式)。使用这种非缓存、只读、只向前的方式,每次读取只将很少的数据放入内存,对内存的占用量较小,对于读取内容较大的XML文件不失为一种最佳的选择。

让我们看看XmlReader类读取XML文件的步骤:

1、使用XmlReader类的Create()工厂方法创建该类的一个实例,并将被读取的XML文件名作为参数传入方法;

2、建立一个反复调用Read()方法的循环。这个方法从文件的第一个节点开始,然后读取所有余下的节点,但每次调用只读取一个节点。如果存在一个节点可被读取则返回True,而当到达文件最后时则返回False;

3、在这个循环中,将检查XmlReader实例的属性和方法,以获得关于当前节点的信息(节点的类型、名称、数据等)。不断执行循环直到Read()返回False;


  

  

下面让我们看看XmlReader类的属性和方法:

返回当前节点的属性个数
返回当前节点的深度,用于判断指定的节点是否具有子节点
判断读取器是否位于流的末端
返回指示当前节点是否具有属性的布尔值
返回指示当前节点是否具有值的布尔值
判断当前节点是否是一个空元素
返回当前节点的本地名称
返回当前节点的限定名称
返回当前节点的命名空间URI
以XmlNodeType枚举的形式返回当前节点的节点类型
返回与当前节点相关的命名空间前缀
以ReadState枚举的形式返回读取器的当前状态
获得当前节点的CLR类型
创建XmlReader对象的实例并将其返回给调用程序
指示当前节点是否是开始标签
移动读取器到指定的属性
如果当前节点不是内容节点,则移动读取器至下一个内容节点
移动读取器至包含当前属性的元素;用于列举属性以及想切换至包含所有这些属性的元素
移动读取器至当前节点的第一个属性
移动读取器至当前节点的下一个属性
读取提供类型的对象的内容
读取当前元素并返回指定类型对象的内容
移动读取器越过当前结束标签并移动到下一个节点
以字符串的形式读取包括标记在内的当前节点所有内容
读取包括当前节点标记和子节点在内的节点的内容
移动读取器至下一个匹配子孙元素的节点
不断读取直至找到指定的元素
移动读取器至下一个匹配兄弟元素的节点
允许读取嵌入在XML文档中的大型文本流
文档对象,表示XML树的根
开始实体声明和结束实体声明
有没有读取节点而查询节点类型时使用
在混合内容模型文档中的空白,或者设置了xml:space=preserve时使用
在文档顶部的XML声明
允许你获得或者设置用于指示是否执行字符检查的值
获得或设置XmlReader对象的符合要求
允许你获得或设置用于指示是否忽略注释的值
指定是否忽略无意义的空格
指定是否允许DTD处理
获得或者设置用于指定模式验证设置的值
获得或者设置用于指定所执行的验证类型的值

  

总结下来,我们可以使用XmlReader类以非缓存、只读、只向前的方式读取XML文件,这种方法占用内存少,推荐大家使用。

}

我要回帖

更多关于 xml查找节点 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信