是用递归的方式遍历全部节点就是.
首先把文档加载了以后获取根,然后开始进行递归遍历.在递归方法中对每一个节点进行操作.
1.Element root = doc.getRootElement();
2.parseElement(root);
private void parseElement(Element e) {
String name = e.getName();//标签名
//其它操作....
// 遍历子标签
for (Iterator iter = e.elementIterator(); iter.hasNext();) {
Element element = (Element) iter.next();
parseElement(element);//递归调用
}
}
追问
为什么我在使用的Element的时候里面没有elementIterator()的方法,然后就是想问问这个能使用迭代器操作吗?我是想在遍历这些标签后将这些标签放在内存中以备使用,如果可以能把具体的代码给我吗?分数可以再加(分都不是事,主要是解决问题!)。
追答
我一般是使用dom4j处理xml,你用的是这个嘛?
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
try {
// 加载文件
Document doc = new SAXReader().read(Main.class.getResourceAsStream("data.xml"));
parseElement(doc.getRootElement());
} catch (DocumentException e) {
e.printStackTrace();
}
}
private static void parseElement(Element e) {
// 标签名
System.out.println(e.getName());
// 属性信息
for (Iterator iter = e.attributeIterator(); iter.hasNext();) {
Attribute attr = (Attribute) iter.next();
System.out.println(attr.getName() + ":" + attr.getText());
}
// 遍历子标签
for (Iterator iter = e.elementIterator(); iter.hasNext();) {
Element element = (Element) iter.next();
parseElement(element);// 递归调用
}
}
}
温馨提示:答案为网友推荐,仅供参考