readXML&writeXML(dom4j)
利用dom4j读写XML文件.如果想利用dom4j读写XML文件的话,那么必须得下载或导入dom4j的jar文件.如果找不到下载地址可以在我的附件中下载.
1.读XML文件例子:ReadXMLDemo.java
package day1;
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;
public class ReadXMLDemo {
/**
* @param args
*/
public static void main(String[] args) {
ReadXMLDemo demo = new ReadXMLDemo();
demo.readXml("src/book.xml");
}
public void readXml(String fileName){
SAXReader reader = new SAXReader();//构造解析器
try {
//解析XML文件为Document对象
Document doc = reader.read(new File(fileName));
//由Document获得Root元素
Element root = doc.getRootElement();
List list = root.elements("武侠小说");
for(Iterator it = list.iterator();it.hasNext();){
Element novel = (Element)it.next();
String name = novel.elementText("书名");
System.out.println(name);
List author = novel.elements("作者");
for(Iterator itau = author.iterator(); itau.hasNext();){
Element auth = (Element)itau.next();
System.out.println(auth.getData());
}
String price = novel.elementText("价格");
System.out.println(price);
String brief = novel.elementText("简介");
System.out.println(brief);
System.out.println("------------------------");
}
Iterator its = root.elementIterator("言情小说");
while(its.hasNext()){
Element element = (Element)its.next();
System.out.println(element.elementText("书名"));
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}book.xml文件如下:
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE 书籍列表 SYSTEM "book.dtd">
<书籍列表>
<武侠小说 id="101" hot="true"
language="en">
<书名><<笑傲江湖>></书名>
<作者>金庸</作者>
<作者>刘苍松</作者>
<价格>$50</价格>
<电话>12345678</电话>
<简介>一本好书
<![CDATA[<<笑傲江湖>><<b>内容</b>
不做任何翻译的一段文字块]]>
<![CDATA[ ]]>
<!-- 这是一段注释 -->
</简介>
</武侠小说>
<武侠小说 id="102">
<书名>流行蝴蝶剑</书名>
<作者>古龙</作者>
<价格>$45</价格>
<邮箱>[email protected]</邮箱>
<简介>也是一本好书</简介>
</武侠小说>
<言情小说 id="103">
<书名>鬼吹灯</书名>
<作者>暴龙</作者>
<价格>$60</价格>
<简介>好看的书</简介>
</言情小说>
<言情小说 id="104">
<书名>还珠格格</书名>
<作者>琼瑶</作者>
<价格>$5</价格>
<简介>很不好看的书</简介>
</言情小说>
</书籍列表>2.写入XML文件例子:WriteXmlDemo.java
package day1;
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;
public class WriteXmlDemo {
/**
* @param args
*/
public static void main(String[] args) {
String[] courses = {"骑马","射箭","烹饪"};
String[] students = {"张三丰","郭靖","花木兰","任我行"};
WriteXmlDemo demo = new WriteXmlDemo();
demo.writeXml("src/students.xml", courses, students);
}
/**
* 写xml文件
* @param fileName 目标文件名
* @param courses 课程列表
* @param students 学生列表
*/
public void writeXml(String fileName, String[] courses,
String [] students){
//生成空的Document
Document doc = DocumentHelper.createDocument();
//生成根元素Record
Element root = doc.addElement("Record");
//给根元素增加两个子元素:Head / Body
Element headElmt = root.addElement("Head");
Element bodyElmt = root.addElement("Body");
//给Head元素增加两个子元素:Code / Exam
headElmt.addElement("Code").setText("SD1106");
headElmt.addElement("Exam").setText("是");
buildBody(bodyElmt, courses, students);
out(fileName, doc);
}
/**
* 构造Body元素及其子元素
* @param bodyElmt Body元素
* @param courses 课程列表
* @param students 学生列表
*/
private void buildBody(Element bodyElmt, String[] courses, String[] students) {
//有多少门课程就有多少个CourseList
//CourseList有两个子元素: CourseCode和Student
for(String course : courses){
Element courseListElmt
= bodyElmt.addElement("CourseList");
Element courseCodeElmt
= courseListElmt.addElement("CourseCode");
courseCodeElmt.setText(course);
Element studentElmt
= courseListElmt.addElement("Student");
//每门课程都增加学生子元素,包括学生名字和成绩
//假设每个学生都选修了每门课程
buildStudent(studentElmt, students);
}
}
/**
* 构造学生子元素,包括学生名字和成绩
* @param studentElmt 学生元素
* @param students 学生列表
*/
private void buildStudent(Element studentElmt, String[] students) {
for(String student : students){
Element studentNameElmt
= studentElmt.addElement("StudentName");
studentNameElmt.setText(student);
studentNameElmt.addAttribute("Score",
new Random().nextInt(100) + "");
}
}
/**
* 将程序中构造的xml Document输出为操作系统文件.
* @param fileName 输出的文件名
* @param doc 程序中构造的Xml文档
*/
private void out(String fileName, Document doc) {
try {
//输出流
FileWriter writer = new FileWriter(fileName);
//输出格式
OutputFormat format
= OutputFormat.createPrettyPrint();
format.setEncoding("gb2312");
//xml文件输出对象,需要两个参数:输出流 / 输出格式
XMLWriter xmlWriter = new XMLWriter(writer,format);
//将doc文档写出
xmlWriter.write(doc);
//关闭
xmlWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}students.xml文件如下:
<?xml version="1.0" encoding="gb2312"?>
<Record>
<Head>
<Code>SD1106</Code>
<Exam>是</Exam>
</Head>
<Body>
<CourseList>
<CourseCode>骑马</CourseCode>
<Student>
<StudentName Score="81">张三丰</StudentName>
<StudentName Score="75">郭靖</StudentName>
<StudentName Score="65">花木兰</StudentName>
<StudentName Score="2">任我行</StudentName>
</Student>
</CourseList>
<CourseList>
<CourseCode>射箭</CourseCode>
<Student>
<StudentName Score="50">张三丰</StudentName>
<StudentName Score="49">郭靖</StudentName>
<StudentName Score="27">花木兰</StudentName>
<StudentName Score="8">任我行</StudentName>
</Student>
</CourseList>
<CourseList>
<CourseCode>烹饪</CourseCode>
<Student>
<StudentName Score="31">张三丰</StudentName>
<StudentName Score="75">郭靖</StudentName>
<StudentName Score="38">花木兰</StudentName>
<StudentName Score="11">任我行</StudentName>
</Student>
</CourseList>
</Body>
</Record> 相关推荐
Yakamoz 2020-05-26
wikiwater 2020-10-27
IdeaElements 2020-08-19
Sophiego 2020-08-16
Kakoola 2020-08-01
Kakoola 2020-07-29
ELEMENTS爱乐冬雨 2020-07-18
ELEMENTS爱乐小超 2020-07-04
ELEMENTS爱乐小超 2020-07-04
Kakoola 2020-06-28
Feastaw 2020-06-18
Wmeng0 2020-06-14
ELEMENTS爱乐冬雨 2020-06-14
云之高水之远 2020-06-14
哈喽elements 2020-06-14