c#

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

C#高级编程:使用XPath命名空间中的类[1]


发布日期:2024年03月21日
 
C#高级编程:使用XPath命名空间中的类[1]
——此文章摘自《C#高级编程(第版)》定价元 特价元 购买

要理解这些类的用法最好是查看一下迭代booksxml文档的代码确定导航是如何工作的为了使用这些示例首先需要添加对SystemXmlXsl 和 SystemXmlXPath命名空间的引用如下所示

using SystemXmlXPath;

using SystemXmlXsl;

这个示例使用了文件booksxpathxml它类似于前面使用的booksxml但booksxpathxml添加了两本书下面是窗体代码这段代码在XPathXSLSample文件夹中

private void button_Click(object sender SystemEventArgs e)

{

//modify to match your path structure

XPathDocument doc=new XPathDocument(\\\\\\booksxpathxml);

//create the XPath navigator

XPathNavigator nav=docCreateNavigator();

//create the XPathNodeIterator of book nodes

// that have genre attribute value of novel

XPathNodeIterator iter=navSelect(/bookstore/book[@genre=novel]);

while(iterMoveNext())

{

LoadBook(iterCurrent);

}

}

private void LoadBook(XPathNavigator lstNav)

{

//We are passed an XPathNavigator of a particular book node

//we will select all of the descendents and

//load the list box with the names and values

XPathNodeIterator iterBook=lstNavSelectDescendants

(XPathNodeTypeElement false);

while(iterBookMoveNext())

listBoxItemsAdd(iterBookCurrentName + :

+ iterBookCurrentValue);

}

在button_Click()方法中首先创建XPathDocument(叫做doc)其参数是要打开的文档的文件和路径字符串下面一行代码创建XPathNavigator

XPathNavigator nav = docCreateNavigator();

本例用Select方法获取genre属性值为novel的所有节点然后使用MoveNext()方法迭代书籍列表中的所有小说

要把数据加载到列表框中使用XPathNodeIteratorCurrent属性根据XPathNodeIterator指向的节点创建一个新的XPathNavigator对象在本例中为文档中的一个book节点创建一个XPathNavigator

LoadBook()方法提取这个XPathNavigator调用Select方法的另一个重载方法SelectDescendants创建另一个XPathNavigator这样XPathNodeIterator就包含了给LoadBook方法发送的book节点的所有子节点

然后在这个XPathNodeIterator上执行另一个MoveNext()循环给列表框加载元素名称和元素值在执行代码后显示所示的屏幕图注意只列出了小说

[] []

               

上一篇:几个C#编程的小技巧 (下)

下一篇:C#高级编程:使用XPath命名空间中的类[2]