如何用dom4j找出多个同名的节点 假设有一个xml,有很多节点,其中有个节点是student,属性是id,它下面有name和age的子节点,这个student节点不止一个,有很多个,而且分布在不同的地方,我怎样用dom4j搜索出所有的student,并且打印它id,name,age的值 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?xml version="1.0" encoding="utf-8"?><a><b>1</b><c id="c2"> <c1>2</c1></c><c id="c3"> <c1>3</c1></c><c id="c4"> <c1>4</c1></c></a>public class Dom4j { private SAXReader reader ; private Document document; private static String path = "c:/xml/dom4j/Dom4jSample.xml"; public Dom4j(String str) throws DocumentException { reader = new SAXReader(); reader.setValidation(false); document = reader.read(new File(str)); } public void getInfo() { Element root = document.getRootElement(); QName qname = new QName("c"); List<Element> list = root.elements(qname); for(int i= 0;i<list.size();i++) { Element e = list.get(i); System.out.println(e.attribute("id").getText()); //属性 System.out.println(e.element("c1").getText()); } public static void main(String[] args) throws DocumentException, IOException, ClassNotFoundException { Dom4j test = new Dom4j(path); test.getInfo(); }}好像只能找到同一层下的相同节点. 万一c节点在某个节点的下面,而不是在根节点下面呢如<a><b>1</b> <f> <c id="c2"> <c1>2</c1> </c> <c id="c3"> <c1>3</c1> </c> <c id="c4"> <c1>4</c1> </c> <f/></a> 用 xpath 就好了啊,直接一次拿到所有符合xpath模板的节点 好了,做出来了List<Element> list1 = document.selectNodes("//A/C"); for(Element n : list1) { //打印元素中属性为id的值 System.out.println("C id = "+ n.attribute("id").getText()); //循环得到其子元素 for(Iterator<Element> i = n.elements().iterator();i.hasNext();) { Element element = (Element)i.next(); //打印这个子元素的name和text System.out.println(element.getName()+":"+element.getText()); } System.out.println(); } 重载hashCode是什么? ftpclient上传文件丢失 具体序列化一个类时失败,不知为什么??简单代码 Jdom生成xml,如何让节点不合并? 不显示按钮,不知道哪错了 如何在JAVA中使用activex 我的toolbar太长,一行显示不下,如何让它能自动换行到第二行, java抛出错误后,是应用当前线程停止了,还是整个虚拟机停止了? 关于java中的画矩形,详细内容情进 java 重写发发后,不能实现 求教怎么再知道图片的倾斜角后,校正图片 刚安装的JMF,使用的时候出了点错误,求解
<?xml version="1.0" encoding="utf-8"?>
<a>
<b>1</b>
<c id="c2">
<c1>2</c1>
</c>
<c id="c3">
<c1>3</c1>
</c>
<c id="c4">
<c1>4</c1>
</c></a>
public class Dom4j {
private SAXReader reader ;
private Document document;
private static String path = "c:/xml/dom4j/Dom4jSample.xml";
public Dom4j(String str) throws DocumentException {
reader = new SAXReader();
reader.setValidation(false);
document = reader.read(new File(str));
} public void getInfo() {
Element root = document.getRootElement();
QName qname = new QName("c");
List<Element> list = root.elements(qname);
for(int i= 0;i<list.size();i++) {
Element e = list.get(i);
System.out.println(e.attribute("id").getText()); //属性
System.out.println(e.element("c1").getText());
}
public static void main(String[] args) throws DocumentException, IOException, ClassNotFoundException { Dom4j test = new Dom4j(path);
test.getInfo(); }
}好像只能找到同一层下的相同节点.
万一c节点在某个节点的下面,而不是在根节点下面呢
如
<a>
<b>1</b>
<f>
<c id="c2">
<c1>2</c1>
</c> <c id="c3">
<c1>3</c1>
</c>
<c id="c4">
<c1>4</c1>
</c>
<f/>
</a>
for(Element n : list1)
{
//打印元素中属性为id的值
System.out.println("C id = "+ n.attribute("id").getText());
//循环得到其子元素
for(Iterator<Element> i = n.elements().iterator();i.hasNext();)
{
Element element = (Element)i.next();
//打印这个子元素的name和text
System.out.println(element.getName()+":"+element.getText());
}
System.out.println();
}