在平台下,要完成这样的工作非常轻松,我们只需使用l.xpath名字空间里的几个类即可,如xpathnavigator和xpathexpression。这些类相当于xslt中xpath的功能,允许你在xml文档中进行遍历,也可以进行排序的操作。下面是对l.xpath名字空间中的类进行的简单的描述:
由于要详细讨论每一个类的细节,超出了我们主题的范围,我们只讨论与排序有关的那些类的使用。首先,我们需要创建一个xpathnavigator对象,以便建立xpath表达式来完成我们的排序功能。由于这个类是一个抽象类,我们不能这样直接创建它:
xpathnavigator nav = new xpathnavigator();
我们必须使用xmldocument、xmldatadocument或xpathdocument的createnavigator()方法来创建:
xpathdocument doc = new xpathdocument(server.mappath("l"));
xpathnavigator nav = atenavigator();
创建了xpathnavigator对象后,我们就可以使用compile()方法编译一个xpath表达式,这个方法返回一个xpathexpression 类,它封装编译过的表达式,同时允许我们进行排序。下面是一个使用xpathnavigator类创建一个编译过的xpath表达式的例子:xpathexpression exp = navpile(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.,"",);
一旦我们对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("l"));
xpathnavigator nav = atenavigator();
xpathnodeiterator nodeiter1 = nav.select(xpath);
while (venext()) {
unsorted.append(nodeiter1.current.value + "<br />");
}
= string();
xpathexpression exp = navpile(xpath);
exp.addsort("text()",xmlsortorder.ascending,
<,"",);
xpathnodeiterator nodeiter2 = nav.select(exp);
while (venext()) {
sorted.append(nodeiter2.current.value + "<br />");
}
= string();
}
百度文库xpath定位
xpathdocument:进行xml文档处理时,提供一个快速、有效的、只读的cache功能,在进行xslt转换时,推荐使用该类。
xpathexception:当处理xpath产生错误时,抛出一个例外。
xpathexpression:保存在调用xpathnavigator的compile()方法时生成的、经过编译的xpath 表达式。
xpathnavigator:提供一个指针模型,供我们读取支持ixpathnavigable接口的所保存的任何类型的数据。
xpathnodeiterator:遍历节点集合。
更多信息请查看IT技术专栏
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论