需要带入dom4j.jar
1 数据库 使用mysql
@Entity
@Table(name="t_stu")
public class Student {
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2 连接数据库生成xml
public class JavaSql {
/**
* java读取xml
*/
public static void main(String[] args) {
try {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch(ClassNotFoundException e) {
System.out.println("加载驱动器类时出现异常");
}
try {
File file=new File("d:/user.xml");
FileOutputStream fos = new FileOutputStream(file);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GB2312");
XMLWriter writer = new XMLWriter(fos,format);
Document doc = DocumentHelper.createDocument();
Element rootElement = DocumentHelper.createElement("user");
doc.setRootElement(rootElement);
java.sql.Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student","root","");
java.sql.Statement sql=conn.createStatement();
java.sql.ResultSet rs=sql.executeQuery("select * from stu");
while(rs.next())
{
Element stu=rootElement.addElement("stu");
Element id=stu.addElement("id");
Element name=stu.addElement("name");
id.addText(rs.getString(1));
name.addText(rs.getString(2));
}
writer.write(doc);
} catch (IOException e) {
e.printStackTrace();
}
} catch(SQLException e) {
System.out.println("数据库连接时出现异常");
}
}
}
3 读取xml并输出
public class Xml {
@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception {
SAXReader read = new SAXReader();
try {
Document doc = read.read(new File("d:/user.xml"));
// 根元素
Element root = doc.getRootElement();
// 取根元素下的子元素名称
Iterator it = root.elementIterator();
while (it.hasNext()) {
// 遍历子元素
Element ele = (Element) it.next();
/*
* System.out.println(ele.getName()); // 取子元素下的元素 Iterator
* chilIterator = ele.elementIterator(); while
* (chilIterator.hasNext()) { // 遍历子元素的元素 Element eleChiElement =
* (Element) chilIterator.next();
* System.out.println(eleChiElement.getText()); }
*/
getChildNode(ele);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
4 递归方法 无限输出
@SuppressWarnings("unchecked")
public static void getChildNode(Element root) {
// 遍历跟元素下的所有子元素
Iterator iter = root.elementIterator();
//下条记录
while (iter.hasNext()) {
//取子元素
Element element = (Element) iter.next();
// 遍历子元素的下面的所有元素
Iterator iter1 = element.elementIterator();
//如果子元素存在 递归 不存在输入
if(!iter1.hasNext())
System.out.println("child:" + element.getText());
else {
getChildNode(element);// 自己调用自己
}
}
}
}