——此文章摘自《C#高级编程(第
版)》定价
元 特价
元 购买
else
{
//otherwise move on
trRead();
}
}
}
private void LoadList(XmlReader reader)
{
try
{
listBoxItemsAdd(readerReadElementString());
}
// if an XmlException is raised ignore it
catch(XmlException er){}
}
运行这段代码结果应与前面示例的结果是一样的因此完成这个任务有多种不同的方式这体现了SystemXml命名空间中类的灵活性
检索属性数据
在运行示例代码时注意在读取节点时没有看到属性这是因为属性不是文档结构的一部分针对元素节点可以检查属性是否存在并可检索属性值
例如如果有属性HasAttributes就返回true否则就返回falseAttributeCount属性确定属性的个数GetAttribute方法按照名称或索引来获取属性如果要一次迭代一个属性就可以使用MoveToFirstAttribute() 和MoveToNextAttribute()方法
下面的示例迭代XmlReaderSample中的属性
protected void button_Click (object sender SystemEventArgs e)
{
//set this path to match your data path structure
string fileName = \\\\\\booksxml;
//Create the new TextReader Object
XmlTextReader tr = new XmlTextReader(fileName);
//Read in node at a time
while(trRead())
{
//check to see if its a NodeType element
if(trNodeType == XmlNodeTypeElement)
{
//if its an element then lets look at the attributes
for(int i = ; i < trAttributeCount; i++) {
listBoxItemsAdd(trGetAttribute(i));
}
}
}
这次查找元素节点找到一个节点后就迭代其所有的属性使用GetAttribute()方法把属性值加载到列表框中在本例中这些属性是genrepublicationdate和ISBN
[] [] []