<?xml version="1.0" encoding="UTF-8"?>
< root>
< person attr = " root one" >
< people attr = " child one" > person one child one</ people>
< people attr = " child two" > person one child two</ people>
</ person>
< person attr = " root two" >
< people attr = " child one" > person two child one</ people>
< people attr = " child two" > person two child two</ people>
< people attr = " child three" > <![CDATA[person two child three]]> </ people>
</ person>
</ root>
import org. dom4j. * ;
import org. dom4j. io. SAXReader ;
import java. io. File ;
import java. util. Iterator ;
import java. util. List ;
public class ParseDom4j {
public static void main ( String [ ] args) {
parseDom4j ( new File ( "F:\\dom4j.xml" ) ) ;
}
public static void parseDom4j ( File file) {
try {
SAXReader reader = new SAXReader ( ) ;
Document doc = reader. read ( file) ;
StringBuffer buffer = new StringBuffer ( ) ;
parseElement ( doc. getRootElement ( ) , buffer) ;
System . out. println ( buffer. toString ( ) ) ;
} catch ( DocumentException e) {
e. printStackTrace ( ) ;
}
}
@SuppressWarnings ( "unchecked" )
public static void parseElement ( Element element, StringBuffer buffer) {
buffer. append ( "<" + element. getName ( ) ) ;
List < Attribute > attrs = element. attributes ( ) ;
if ( attrs != null ) {
for ( Attribute attr : attrs) {
buffer. append ( " " + attr. getName ( ) + "=\"" + attr. getValue ( ) + "\"" ) ;
}
}
buffer. append ( ">" ) ;
Iterator < Node > iterator = element. nodeIterator ( ) ;
while ( iterator. hasNext ( ) ) {
Node node = iterator. next ( ) ;
if ( node instanceof Element ) {
Element eleNode = ( Element ) node;
parseElement ( eleNode, buffer) ;
}
if ( node instanceof Text ) {
Text text = ( Text ) node;
buffer. append ( text. getText ( ) ) ;
}
if ( node instanceof CDATA) {
CDATA dataNode = ( CDATA) node;
buffer. append ( dataNode. getText ( ) ) ;
}
if ( node instanceof Comment ) {
Comment comNode = ( Comment ) node;
buffer. append ( comNode. getText ( ) ) ;
}
}
buffer. append ( "</" + element. getName ( ) + ">" ) ;
}
}