`
caleb_520
  • 浏览: 247899 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

通过开源dom4j,递归解析xml文件

    博客分类:
  • XML
阅读更多


package com.gxa.jdk5.example1;

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

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

public class Dom4j_2 {
	
	public Document readXML() {
		Document document = null;
		SAXReader saxReader = new SAXReader();
		try {
			document = saxReader.read(new File("D:/workspace/XML/chapter_08.xml"));
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return document;
	}
	
	public void disXML_3(Element element) {
		Iterator iterator = element.elementIterator();
		List list = null;
		while (iterator.hasNext()) {
			Element node = (Element) iterator.next();
			list = node.elements();
			if (list != null && list.size() > 0) {
				System.out.print(node.getName());
				int count = node.attributeCount();
				for (int i = 0; i < count; i++) {
					Attribute attr = node.attribute(i);
					System.out.println("*****" + attr.getName() + " " + attr.getText());
				}
				disXML_3(node);
			} else {
				System.out.println(node.getName() + " " + node.getText());
			}
		}
	}
	
	public void getRoot(Document document) {
		Element root = document.getRootElement();
		disXML_3(root);
	}
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Dom4j_2 d = new Dom4j_2();
		d.getRoot(d.readXML());
	}

}
  • 大小: 23.3 KB
分享到:
评论
3 楼 shanxmxj 2011-01-07  
这个递归是没有问题 运行现在的这个xml文件是可以的 
但是如果第二层下还有子节点的话 
list = node.elements();  这里的list 就取不到值
改成list = node.attributes();
这个就可以了
2 楼 caleb_520 2009-10-30  
394580844 写道
递归好像有问题吧
不知道你运行过没

这个测试时通过的,主要是看看你的xml文件中的内容格式。
1 楼 394580844 2009-10-17  
递归好像有问题吧
不知道你运行过没

相关推荐

Global site tag (gtag.js) - Google Analytics