dom4j 读xml问题问题!急急急

城市拖拉机 2011-03-15 08:56:47
xml 格式如下
<root>
<crawler>
<domain>
<page></page>
<page></page>
</domain>

<content>
<user></user>
<user></user>
</content>
</crawler>
</root>


下面是读取的代码

SAXReader reader = new SAXReader();
Document doc = reader.read(new FileInputStream(file),"UTF-8");
Element root = doc.getRootElement();

List crawlerElements=root.elements("crawler");
for(int i = 0;i<crawlerElements.size();i++){
Element crawlerElement=(Element)crawlerElements.get(i);

List domainElements = crawlerElement.elements("domain");
List postElements = crawlerElement.elements("content");

}
List postElements = crawlerElement.elements("content");

为什么取这个节点取不到呢?? 打印的信息为null 是不是方法用错了 大家帮忙看下 急急急!!!
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zqfddqr 2011-03-16
  • 打赏
  • 举报
回复
打印的信息为null怎么打印出的这个
wangju309 2011-03-16
  • 打赏
  • 举报
回复
crawlerElements.get(i)是Element类型的么?
我记着好像是content什么的,之后得判断一下如果是element类型就怎样做
UPC_思念 2011-03-16
  • 打赏
  • 举报
回复
除了elements方法之外还有element这个方法,别总是都用elements方法。如果有多个重复节点,就用elements,单个的用element即可
UPC_思念 2011-03-16
  • 打赏
  • 举报
回复
a.xml文件
<?xml version="1.0" encoding="GBK" standalone="yes"?>
<root>
<crawler>
<domain>
<page>1</page>
<page>2</page>
</domain>
<content>
<user>a</user>
<user>b</user>
</content>
</crawler>
</root>


package bean;

import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Document document = null;
try {
SAXReader sr=new SAXReader();
//根据xml文件生成document对象
document = sr.read(new File("src/bean/a.xml"));
//获取根节点root下的节点crawler
Element crawler= document.getRootElement().element("crawler");
//获取crawler->domain下的page列表
List<Element> pages=crawler.element("domain").elements("page");
//遍历page
for(Element page:pages){
System.out.println("page="+page.getText());
}
//获取根节点crawler->content下的user列表
List<Element> users=crawler.element("content").elements("user");
//遍历users
for(Element user:users){
System.out.println("user="+user.getText());
}
} catch (Exception e) {
e.printStackTrace();
}
}

}

打印内容:
page=1
page=2
user=a
user=b

hardsonxu 2011-03-15
  • 打赏
  • 举报
回复
我用你的程序读,是读得到的哦。代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class DomTest {

public static void main(String args[]) {
SAXReader reader = new SAXReader();
File file = new File("d:/domtest.xml");
Document doc;
try {
doc = reader.read(new FileInputStream(file), "UTF-8");
Element root = doc.getRootElement();

List crawlerElements = root.elements("crawler");
for (int i = 0; i < crawlerElements.size(); i++) {
Element crawlerElement = (Element) crawlerElements.get(i);

List domainElements = crawlerElement.elements("domain");
List postElements = crawlerElement.elements("content");
System.out.println(postElements.size());
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧