c#

位置:IT落伍者 >> c# >> 浏览文章

C#高级编程:使用 XmlTextReader类[2]


发布日期:2023年12月10日
 
C#高级编程:使用 XmlTextReader类[2]
——此文章摘自《C#高级编程(第版)》定价元 特价元 购买

下面的示例说明了如何使用ReadElementString()(这段代码在XmlReaderSample文件夹中)注意这个示例使用FileStream所以需要通过using语句来包括SystemIO命名空间

protected void button_Click (object sender SystemEventArgs e)

{

//use a filestream to get the data

FileStream fs = new FileStream(\\\\\\booksxml FileModeOpen);

XmlTextReader tr = new XmlTextReader(fs);

while(!trEOF)

{

//if we hit an element type try and load it in the listbox

if(trMoveToContent() == XmlNodeTypeElement && trFTEL==title)

{

listBoxItemsAdd(trReadElementString());

}

else

{

//otherwise move on

trRead();

}

}

}

在while循环中使用MoveToContent查找类型为XmlNodeTypeElement和名称为title的节点我们使用XmlTextReader的EOF属性作为循环条件如果节点的类型不是Element或者名称不是titleelse子句就会调用Read()方法进入下一个节点查找到一个满足条件的节点后就把ReadElementString()的结果添加到列表框中这样就在listbox中添加一个书名注意在成功执行了ReadElementString()后不需要调用Read()方法这是因为ReadElementString()已经查看了整个Element然后定位到下一个节点上

如果删除了if子句中的&& trFTEL==title在抛出XmlException异常时就必须捕获它如果查看一下数据文件就会发现MoveToContent()查找到的第一个元素是<bookstore>因为它是一个元素所以把检查过程放在if语句中但是它不包含简单的文本类型因此会让ReadElementString()引发一个XmlException异常解决这个问题的一种方式是把ReadElementString()调用放在它自己的函数中现在如果在这个函数中ReadElementString()调用失败就可以处理错误返回给调用函数

下面就调用这个新方法LoadList()把XmltextReader作为参数进行了这些修改后该示例如下所示(这段代码在XmlReaderSample文件夹中)

protected void button_Click (object sender SystemEventArgs e)

{

//use a filestream to get the data

FileStream fs = new FileStream(\\\\\\booksxml FileModeOpen);

XmlTextReader tr = new XmlTextReader(fs);

while(!trEOF)

{

//if we hit an element type try and load it in the listbox

if(trMoveToContent() == XmlNodeTypeElement)

{

LoadList(tr);

}

[] [] []

               

上一篇:C#高级编程:使用 XmlTextReader类[1]

下一篇:C#高级编程:使用 XmlTextReader类[3]