网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 XPathExpression类对XML进行排序
内容
    在.net平台下,要完成这样的工作非常轻松,我们只需使用system.xml.xpath名字空间里的几个类即可,如 xpathnavigator和xpathexpression。这些类相当于xslt中xpath的功能,允许你在xml文档中进行遍历,也可以进行排 序的操作。下面是对system.xml.xpath名字空间中的类进行的简单的描述:
    由于要详细讨论每一个类的细节,超出了我们主题的范围,我们只讨论与排序有关的那些类的使用。首先,我们需要创建一个xpathnavigator对象,以便建立xpath表达式来完成我们的排序功能。由于这个类是一个抽象类,我们不能这样直接创建它:
    xpathnavigator nav = new xpathnavigator();
    我们必须使用xmldocument、xmldatadocument或xpathdocument的createnavigator()方法来创建:
    xpathdocument doc = new xpathdocument(server.mappath("customers.xml"));
    xpathnavigator nav = doc.createnavigator();
    创建了xpathnavigator对象后,我们就可以使用compile()方法编译一个xpath表达式,这个方法返回一个 xpathexpression 类,它封装编译过的表达式,同时允许我们进行排序。下面是一个使用xpathnavigator类创建一个编译过的xpath表达式的例子:
    xpathexpression exp = nav.compile(xpath);
    我们通过使用xpathexpression对象的addsort()方法实现排序的功能,这个方法有两个重载的方式:
    public abstract void addsort(object expr, icomparer comparer);
    public abstract void addsort(
    object expr,
    xmlsortorder order,
    xmlcaseo教程rder caseorder,
    string lang,
    xmldatatype datatype
    );
    第一个方法允许我们使用自定义的排序表达式;第二个方法有5个参数:分别是要排序的对象、排序顺序、条件顺序、语言类别和数据类型,下面就是使用该方法进行排序的例子:
    exp.addsort("text()",xmlsortorder.ascending,xmlcaseorder.none,"",xmldatatype.text);
    一旦我们对xpath表达式添加了排序的功能,我们就可以调用xpathnavigator对象的select()方法,并把编译过的xpath表 达式作为参数,select()方法返回一个xpathnodeiterator对象,我们可以使用它遍历我们所选择的节点。
    下面就是用c#编写的实现排序功能的所有代码:
    private void page_load(object sender, system.eventargs e) {
    stringbuilder unsorted = new stringbuilder();
    stringbuilder sorted = new stringbuilder();
    string xpath = "/customers/customer/contactname";
    xpathdocument doc = new xpathdocument(server.mappath("customers.xml"));
    xpathnavigator nav = doc.createnavigator();
    xpathnodeiterator nodeiter1 = nav.select(xpath);
    while (nodeiter1.movenext()) {
    unsorted.append(nodeiter1.current.value + "<br />");
    }
    this.lblunsorted.text = unsorted.tostring();
    xpathexpression exp = nav.compile(xpath);
    exp.addsort("text()",xmlsortorder.ascending,
    xmlcaseorder.none,"",xmldatatype.text);
    xpathnodeiterator nodeiter2 = nav.select(exp);
    while (nodeiter2.movenext()) {
    sorted.append(nodeiter2.current.value + "<br />");
    }
    this.lblsorted.text = sorted.tostring();
    }
    xpathdocument:进行xml文档处理时,提供一个快速、有效的、只读的cache功能,在进行xslt转换时,推荐使用该类。
    xpathexception:当处理xpath产生错误时,抛出一个例外。
    xpathexpression:保存在调用xpathnavigator的compile()方法时生成的、经过编译的xpath表达式。
    xpathnavigator:提供一个指针模型,供我们读取支持ixpathnavigable接口的所保存的任何类型的数据。
    xpathnodeiterator:遍历节点集合。
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/21 12:18:14