信息产业培训网

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

http://www.miiceic.org.cn   2008-2-27 14:33:34   中程在线   浏览数:
关键字:.net

    要理解这些的用法,最好是查看一下迭代books.xml文档的代码,确定导航是如何工作的。为了使用这些示例,首先需要添加对System.Xml.Xsl 和 System.Xml.XPath命名空间的引用,如下所示:
    using System.Xml.XPath;
    using System.Xml.Xsl;

    这个示例使用了文件booksxpath.xml,它类似于前面使用的books.xml,但booksxpath.xml添加了两本书。下面是窗体代码,这段代码在XPathXSLSample1文件夹中:
    private void button1_Click(object sender, System.EventArgs e)
    {
       //modify to match your path structure
       XPathDocument doc=new XPathDocument("..\\..\\..\\booksxpath.xml");
       //create the XPath navigator
       XPathNavigator nav=doc.CreateNavigator();
       //create the XPathNodeIterator of book nodes
       // that have genre attribute value of novel
       XPathNodeIterator iter=nav.Select("/bookstore/book[@genre='novel']");
     
       while(iter.MoveNext())
       {
          LoadBook(iter.Current);
       }
    }
    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=lstNav.SelectDescendants
                                  (XPathNodeType.Element, false);
       while(iterBook.MoveNext())
          listBox1.Items.Add(iterBook.Current.Name + ": "
                                                   + iterBook.Current.Value);
    }

    在button1_Click()方法中,首先创建XPathDocument(叫做doc),其参数是要打开的文档的文件和路径字符串。下面一行代码创建XPathNavigator:
    XPathNavigator nav = doc.CreateNavigator();

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

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

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

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

来源:csai
相关连接
最新评论
*以下网友发言不代表中程在线网站的观点和看法
    我要评论

    请您注意
    1、遵守中华人民共和国的各项有关法律规定
    2、承担一切因您的行为而导致的法律责任
    3、本网留言管理人员有权删除其管辖留言内容
    4、您在本网的留言本网有权在网站内转载和引用
    5、参与本留言即表明您已经阅读并接受上述条款
    我爱研发网中电华信阿里西西JAVA爱好者北京英才网全球大学查询网
    中国人的网站导航中国电脑论坛信息产业部新浪科技搜狐IT信息产业部电子教育与考试中心
    IT世界网软件项目交易网中国软件交易网国信培训网亚远景科技....[更多]
    关于我们 | 网站地图 | 周边住宿 | 行车路线 | 联系我们 | 网站律师 | 意见反馈 | 虚位以待 | 友情链接
    中程在线(北京)科技有限公司 版权所有
    总 部:北京市海淀区青东商务楼A座西四层
    企业培训部:010-52636110 52636106 就业培训部:010-68716925 68716926
    邮 件:training@miiceic.org.cn
    京ICP备06053134号
    Copyright © 2005-2008 Miiceic.org.cn All Rights Reserved