1.直接使用SAXReader
package com.crown.saxdecoder;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class SaxReaderTest{
public static void main(String[] args) {
new SaxReaderTest().doParse();
}
public void doParse() {
SAXReader reader= new SAXReader();
Document document =null;
try {
document= reader.read(getInputStream());
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Element rootElement = document.getRootElement();
getNodes(rootElement);
}
public InputStream getInputStream(){
return this.getClass().getClassLoader().getResourceAsStream("student.xml");
}
public void getNodes(Element rootElement) {
System.out.println("節點名稱:"+ rootElement.getName());
//獲得當前節點的所有屬性
List<Attribute> attributes = rootElement.attributes();
attributes.forEach(attribute -> {
System.out.println("屬性名稱:"+attribute.getName()+","+"屬性值:"+attribute.getText());
});
if (!StringUtils.isEmpty(rootElement.getTextTrim())) {
System.out.println("節點名稱:"+ rootElement.getName()+"<"+"節點值:"+rootElement.getText()+">");
}else {
// System.out.println(rootElement.getText());
}
//獲得所有節點
Iterator<Element> elementIterator = rootElement.elementIterator();
while(elementIterator.hasNext()) {
getNodes(elementIterator.next());
}
}
}