黑马程序员技术交流社区
标题: XML自学笔记2(Java 操作 XML (JDOM&DOM4J)) [打印本页]
作者: 呱码农 时间: 2016-11-23 19:35
标题: XML自学笔记2(Java 操作 XML (JDOM&DOM4J))
一、Java 操作 XML (JDOM&DOM4J)
JDOM是什么?
JDOM 是一种使用 XML(标准通用标记语言下的一个子集)的独特 Java 工具包,用于快速开发 XML 应用程序。它可以生成XML和修改XML。
1、用JDOM生成一个XML文件:
1)JDOM 官方网站:http://www.jdom.org/,下载JDOM,然后导包。
2)下面是代码:
public class JDOM01 {
public static voidmain(String[] args) {
Element student=new Element("student");
Attribute id = newAttribute("id", "001");
Attribute aa = newAttribute("aa", "xx");
student.setAttribute(id);
student.setAttribute(aa);
Element name=new Element("name");
name.setText("张三");
student.addContent(name);
Element sex=new Element("sex");
sex.setText("男");
student.addContent(sex);
Element age=new Element("age");
age.setText("21");
student.addContent(age);
Document document=new Document(student);
XMLOutputter out =newXMLOutputter();
out.setFormat(out.getFormat().setEncoding("UTF-8"));
try {
out.output(document, new FileOutputStream("src/student2.xml"));
} catch(FileNotFoundException e) {
// TODOAuto-generated catch block
e.printStackTrace();
} catch(IOException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
}
}
3)生成的studen2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<student id="001" aa="xx"><name>张三</name><sex>男</sex><age>21</age></student>
发现是这个格式,JDOM生成的XML不会自动排版格式,挺难看的。
2、用JDOM遍历一个XML文件:
1)代码:
public class JDOM02 {
public static voidmain(String[] args) throws Exception {
SAXBuilder builder=newSAXBuilder();
Document document = builder.build("src/students.xml");
Element students=document.getRootElement();
List studentList =students.getChildren("student");
for(int i =0;i<studentList.size();i++){
Element student=(Element)studentList.get(i);
String id=student.getAttributeValue("id");
String name=student.getChildText("name");
String sex=student.getChildText("sex");
String age=student.getChildText("age");
System.out.println("學號:"+id+";姓名:"+name+";性別:"+sex+"年齡:"+age);
}
}
}
2)运行结果:
學號:001;姓名:张三;性別:男年齡:20
學號:002;姓名:李四;性別:女年齡:20
DOM4J是什么?
dom4j 是一个 Java 的 XMLAPI,类似于 jdom,用来读写 XML 文件的。dom4j 是一个非常非常优秀的 JavaXMLAPI,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在 IBM developerWorks 上面可以找到一篇文章,对主流的 Java XMLAPI 进行的性能、功能和易用性的评测,dom4j 无论在哪个方面都是非常出色的。如今你可以看到越来越多的 Java 软件都在使用 dom4j 来读写XML,特别值得一提的是连 Sun 的 JAXM 也在用 dom4j。这是必须使用的jar 包, Hibernate 用它来读写配置文件。
1、用DOM4J生成一个XML文件:
1)DOM4J 官方网站:http://www.dom4j.org/,下载DOM4J,然后导包。
2)下面是代码:
public class DOM4J01 {
/**
* 生成xml
* @param args
*/
public static voidmain(String[] args) {
Document document=DocumentHelper.createDocument();
Element studentElement=document.addElement("student");//通過文檔添加元素
studentElement.addAttribute("id", "001");//添加屬性
studentElement.addAttribute("aa", "xx");//添加屬性
Element name=studentElement.addElement("name");
name.setText("張三");
Element sex=studentElement.addElement("sex");
sex.setText("男");
Element age=studentElement.addElement("age");
age.setText("20");
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
try {
XMLWriter writer=newXMLWriter(new FileOutputStream("src/student3.xml"),format);
writer.write(document);
writer.close();
} catch(UnsupportedEncodingException e) {
// TODOAuto-generated catch block
e.printStackTrace();
} catch(FileNotFoundException e) {
// TODOAuto-generated catch block
e.printStackTrace();
} catch(IOException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
}
}
3)生成的studen3.xml:
<?xml version="1.0" encoding="UTF-8"?>
<student id="001" aa="xx">
<name>張三</name>
<sex>男</sex>
<age>20</age>
</student>
用DOM4J生成的xml文件是自动排版格式的,这个比JDOM做的好!顺眼好多了。
2、用DOM4J遍历一个XML文件:
1)代码:
public class DOM4J02 {
public static voidmain(String[] args) throws Exception {
SAXReader saxReader=newSAXReader();
Document document=saxReader.read("src/students.xml");
Element rootElement= document.getRootElement();
Iterator iter = rootElement.elementIterator();
while (iter.hasNext()){
Element studentElement=(Element)iter.next();
System.out.println("學號:"+studentElement.attributeValue("id")+";姓名:"+studentElement.elementText("name")+";性別:"+studentElement.elementText("sex")+";年齡:"+studentElement.elementText("age"));
}
}
}
2)运行结果:
學號:001;姓名:张三;性別:男;年齡:20
學號:002;姓名:李四;性別:女;年齡:20
作者: aA772807986 时间: 2016-11-23 22:38
学习学习!!!
作者: xss222 时间: 2016-12-9 00:40
。。。。。。。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |