wpf高级编程pdf C#高级编程:使用 XmlTextReader类[2]
C#高级编程:使用 XmlTextReader类[2]
![wpf高级编程pdf C#高级编程:使用 XmlTextReader类[2]](http://img.zhputi.com/uploads/4276/4276daf4770fb2ae4c5efb116ed79d6034958.jpg)
——此文章摘自《C#高级编程(第 版)》定价 元 特价 元 购买
下面的示例说明了如何使用ReadElementString()(这段代码在XmlReaderSample 文件夹中) 注意这个示例使用FileStream 所以需要通过using语句来包括System IO命名空间 protected void button _Click (object sender System EventArgs e) { //use a filestream to get the data FileStream fs = new FileStream( \ \ \books xml FileMode Open); XmlTextReader tr = new XmlTextReader(fs); while(!tr EOF) { //if we hit an element type try and load it in the listbox if(tr MoveToContent() == XmlNodeType Element && tr FTEL== title ) { listBox Items Add(tr ReadElementString()); } else { //otherwise move on tr Read(); } } }
在while循环中 使用MoveToContent查找类型为XmlNodeType Element和名称为title的节点 我们使用XmlTextReader的EOF属性作为循环条件 如果节点的类型不是Element 或者名称不是title else子句就会调用Read()方法进入下一个节点 查找到一个满足条件的节点后 就把ReadElementString()的结果添加到列表框中 这样就在listbox中添加一个书名 注意 在成功执行了ReadElementString()后 不需要调用Read()方法 这是因为ReadElementString()已经查看了整个Element 然后定位到下一个节点上
如果删除了if子句中的&& tr FTEL== title 在抛出XmlException异常时 就必须捕获它 如果查看一下数据文件 就会发现MoveToContent()查找到的第一个元素是<bookstore> 因为它是一个元素 所以把检查过程放在if语句中 但是 它不包含简单的文本类型 因此会让ReadElementString()引发一个XmlException异常 解决这个问题的一种方式是把ReadElementString()调用放在它自己的函数中 现在 如果在这个函数中ReadElementString()调用失败 就可以处理错误 返回给调用函数
下面就调用这个新方法LoadList() 把XmltextReader作为参数 进行了这些修改后 该示例如下所示(这段代码在XmlReaderSample 文件夹中) protected void button _Click (object sender System EventArgs e) { //use a filestream to get the data FileStream fs = new FileStream( \ \ \books xml FileMode Open); XmlTextReader tr = new XmlTextReader(fs); while(!tr EOF) { //if we hit an element type try and load it in the listbox if(tr MoveToContent() == XmlNodeType Element) { LoadList(tr); }
lishixinzhi/Article/program/net/201311/15182