posts - 7,  comments - 58,  trackbacks - 0
请高手解救小弟,万分感激!使用dom4j如何实现按Element的某个属性排序???如下面xml文件

<?xml version="1.0" encoding="GBK"?>
<books>
  <book name="请高手解救下小弟" price="30.00">
  <book name="万分感激" price="40.00">
  <book name="谢谢大家的回应" price="50.00">
 </books>

我想获取books节点下的所有book子节点,并按price属性排序,如何实现?

本人阅读dom4j的文档,找到org.dom4j.xpath.DefaultXPath.selectNodes(Object context, XPath sortXPath)方法第二个参数"sortXPath"好像是用来排序的,但不知如何写sortXPath参数。

先谢过,在线等。


说明:本人不需要xsl排序方案。

posted on 2009-05-15 14:47 Sonny Li 阅读(3068) 评论(5)  编辑  收藏

FeedBack:
# re: 请高手解救小弟,万分感激!使用dom4j如何实现按Element的某个属性排序???
2009-05-15 16:11 | Edward's
selectNodes("//books/book", "@price");  回复  更多评论
  
# re: 请高手解救小弟,万分感激!使用dom4j如何实现按Element的某个属性排序???
2009-05-15 17:44 | 无羽苍鹰
@Edward's
谢谢你的帮助。

我还想请教下,如何指定升序/降序?  回复  更多评论
  
# re: 请高手解救小弟,万分感激!使用dom4j如何实现按Element的某个属性排序???
2009-05-17 23:03 | 无羽苍鹰
虽然没什么人回复,但还是谢谢大家,这是本人的一个解决方案!
File xmlFile = new File("...user.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(xmlFile);
List<Element> nodes = doc.selectNodes("//user", "@id"); //升序
for(Element e : nodes) {
System.out.println("id : " + e.attributeValue("id"));
System.out.println("name : " + e.attributeValue("name"));
}
System.out.println("----------------------------------");
Collections.reverse(nodes); //降序
for(Element e : nodes) {
System.out.println("id : " + e.attributeValue("id"));
System.out.println("name : " + e.attributeValue("name"));
}  回复  更多评论
  
# re: 请高手解救小弟,万分感激!使用dom4j如何实现按Element的某个属性排序???
2009-05-20 09:28 | Iterator
多谢楼主,我用了你的方法,很好  回复  更多评论
  
# re: 请高手解救小弟,万分感激!使用dom4j如何实现按Element的某个属性排序???
2009-12-17 17:50 | 房东
如果不是按属性排序,而是按照子节点的内容排序,这个如何做呢  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2009年5月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

相册

收藏夹

博客好友

搜索

  •  

最新评论

阅读排行榜

评论排行榜