package com.kk.xml;
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;
public class OperateXML {
/**
* @param args
* @throws IOException
* @throws DocumentException
*/
public static void main(String[] args) throws IOException, DocumentException {
generateXML();
parseXMLFromString();
}
/**
* 将生成的xml以字符串形式打印
* @throws IOException
*/
private static void generateXML() throws IOException {
Document document=DocumentHelper.createDocument();
Element message=document.addElement("message");
message.addAttribute("type", "GetAllDefence");
Element students=message.addElement("students");
for(int i=0;i<10;i++){
Element student=students.addElement("student");
student.addElement("name").setText("my name is"+i);
student.addElement("gender").setText("男");
}
System.out.println(document.asXML());
}
/**
* 将生成的xml以字符串形式打印(字节流)
* @throws IOException
*/
private static void generateXMLByStream() throws IOException {
Document document=DocumentHelper.createDocument();
Element message=document.addElement("message");
message.addAttribute("type", "GetAllDefence");
Element students=message.addElement("students");
for(int i=0;i<10;i++){
Element student=students.addElement("student");
student.addElement("name").setText("my name is"+i);
student.addElement("gender").setText("男");
}
OutputStream os=new ByteArrayOutputStream();
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter output=new XMLWriter(os,format);
output.write(document);
output.close();
String str=os.toString();
os.close();
System.out.println(str);
}
private static void parseXMLFromFile() throws DocumentException{
SAXReader reader=new SAXReader();
Document document=reader.read("students.xml"); //读流
Element root=document.getRootElement(); //message
//for(Iterator it=root.selectNodes("//students/student").iterator();it.hasNext();){ //xpath方式,需要jaxen.jar
for(Iterator it=root.element("students").elementIterator("student");it.hasNext();){
Element student=(Element) it.next();
System.out.println(student.elementTextTrim("name"));
System.out.println(student.elementTextTrim("gender"));
}
}
private static void parseXMLFromString() throws DocumentException{
String xml="<?xml version=\"1.0\" encoding=\"gbk\"?>"
+"<message type=\"GetAllDefence\">"
+"<students>"
+"<student num=\"0\">"
+"<name>my name is0</name>"
+"<gender>男</gender>"
+"</student>"
+"</students>"
+"</message>";
Document document=DocumentHelper.parseText(xml); //读字符串
Element root=document.getRootElement(); //message
for(Iterator it=root.element("students").elementIterator("student");it.hasNext();){
Element student=(Element) it.next();
System.out.println(student.elementTextTrim("name"));
System.out.println(student.elementTextTrim("gender"));
}
}
}