java对xml文件的操作有多种方法,其中dom4j是非常优秀的一种常用方法,首先需要引入dom4j的包,这里引入dom4j-2.0.1.jar。
1.dom4j的xml创建
jsp代码:
<%@page import="org.dom4j.io.OutputFormat"%>
<%@page import="org.dom4j.io.XMLWriter"%>
<%@page import="java.io.FileWriter"%>
<%@page import="org.dom4j.Element"%>
<%@page import="org.dom4j.Document"%>
<%@page import="org.dom4j.DocumentHelper"%>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<title>XML创建</title>
</head>
<body>
<%
// 创建文档并设置文档的根节点
Document document = DocumentHelper.createDocument();
Element root = document.addElement("root");
//在根节点下添加节点并设置名称、值、属性名称、属性值
Element author1 = root.addElement("author").addAttribute("name", "James").addAttribute("location", "UK").addText("James Strachan");
Element author2 = root.addElement("author").addAttribute("name", "Bob").addAttribute("location", "US").addText("Bob McWhirter");
//创建文件输出流
FileWriter fw = new FileWriter("F://foo.xml");
//document.write(fw);
//创建格式s
//OutputFormat format = OutputFormat.createCompactFormat();
OutputFormat format = OutputFormat.createPrettyPrint();
//创建XMLWriter对象
XMLWriter writer = new XMLWriter(fw,format);
//向文件写入数据
writer.write(document);
writer.close();
%>
</body>
</html>
运行该jsp页面就可以看到F:foo.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<author name="James" location="UK">James Strachan</author>
<author name="Bob" location="US">Bob McWhirter</author>
</root>
2.dom4j的xml解析
直接解析上例中创建的xml文件,jsp代码:
<%@page import="org.dom4j.Attribute"%>
<%@page import="java.util.List"%>
<%@page import="java.util.Iterator"%>
<%@page import="org.dom4j.Element"%>
<%@page import="java.io.File"%>
<%@page import="org.dom4j.Document"%>
<%@page import="org.dom4j.io.SAXReader"%>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<title>XML解析</title>
</head>
<body>
<%
//1.获取SAM接口:
SAXReader saxReader = new SAXReader();
//2.获取XML文件:
Document document = saxReader.read(new File("F://foo.xml"));
//3.获取根节点:
Element root = document.getRootElement();
System.out.println("根节点: " + root.getName());
System.out.println("----------------");
//获取子节点
Iterator<Element> it= root.elementIterator();
while(it.hasNext()){
Element element = it.next();
//打印子节点的名称和值
System.out.println(element.getName()+"----------------"+element.getStringValue());
//获取属性名属性值
List<Attribute> li= element.attributes();
for(Attribute att : li){
//打印子节点的属性名称和属性值
System.out.println(att.getName()+"-------"+att.getValue());
}
//获取子节的子节点
Iterator<Element> ite = element.elementIterator();
while(ite.hasNext()){
Element child = ite.next();
System.out.println(child.getName()+"-------"+child.getStringValue());
}
System.out.println("----------------");
}
%>
</body>
</html>
运行该jsp页面,控制台输出如下: