public void build() throws HsException {
try {
SAXBuilder sb = new SAXBuilder();
String xml = this.headDtd+this.rootDtd;
debug(xml);
doc = sb.build(new StringReader(xml));
root = doc.getRootElement();
} catch (Exception e) {
throw new HsException(HsErrorMsg.FILE_ERROR, "默认创建xml文档失败:"
+ e.getMessage(), e);
}
}
/**
* 把xml结构的文件初始化到JdomXml
* @param 文件对象
* @return
*/
public void build(File file) throws HsException {
try {
SAXBuilder sb = new SAXBuilder();
doc = sb.build(file);
root = doc.getRootElement();
} catch (Exception e) {
throw new HsException(HsErrorMsg.FILE_ERROR, "读取文件,创建xml文档失败:"
+ e.getMessage(), e);
}
}
/**
* 把字节流的xml结构初始化到JdomXml对象中
* @param InputStream字节流
* @return
*/
public void build(InputStream in) throws HsException {
try {
SAXBuilder sb = new SAXBuilder();
doc = sb.build(in);
root = doc.getRootElement();
} catch (Exception e) {
throw new HsException(HsErrorMsg.FILE_ERROR, "读取IO字节流,创建xml文档失败:"
+ e.getMessage(), e);
}
}
/**
* 把字符流的xml结构初始化到JdomXml对象中
* @param Reader字符流
* @return
*/
public void build(Reader reader) throws HsException {
try {
SAXBuilder sb = new SAXBuilder();
doc = sb.build(reader);
root = doc.getRootElement();
} catch (Exception e) {
throw new HsException(HsErrorMsg.FILE_ERROR, "读取IO字符流,创建xml文档失败:"
+ e.getMessage(), e);
}
}
/**
* 把xml结构的字符串初始化到JdomXml对象中
* @param xml的字符串
* @return
*/
public void build(String strDoc) throws HsException {
try {
SAXBuilder sb = new SAXBuilder();
doc = sb.build(new StringReader(strDoc));
root = doc.getRootElement();
} catch (Exception e) {
throw new HsException(HsErrorMsg.FILE_ERROR, "字符串初始化,创建xml文档失败:"
+ e.getMessage(), e);
}
}
package com.xml.jdom.test;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class DOMTest {
private String inFile = "d:\\people.xml";
private String outFile = "d:\\people.xml";
public static void main(String[] args){
new DOMTest();
}
public DOMTest(){
try{
DocumentBuilder builder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.newDocument();
Element root = doc.createElement("老师");
Element wang = doc.createElement("王");
Element liu = doc.createElement("刘");
wang.appendChild(doc.createTextNode("我是王老师"));
root.appendChild(wang);
doc.appendChild(root);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(new DOMSource(doc), new StreamResult(outFile));
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
<?xml version="1.0" endoding="gb2312" ?>
<person>
<name>王小明</name>
<college>计算机科学与技术学院</college>
<telephone>666888</telephone>
<notes>男,1989年生</notes>
</person>
package com.xml.test;
import java.util.Hashtable;
import org.xml.sax.*;
public class SAXHandler extends HandlerBase{
private Hashtable table = new Hashtable();
private String currentElement = null;
private String currentValue= null;
public void setTable(Hashtable table){
this.table = table;
}
public Hashtable getTable(){
return table;
}
public void startElement(String tag,AttributeList attrs) throws SAXException{
currentElement = tag;
}
public void characters(char[] ch,int start,int length)throws SAXException{
currentValue = new String(ch,start,length);
}
public void endElement(String name)throws SAXException{
if(currentElement.equals(name))
table.put(currentElement, currentValue);
}
}
<%@ page language="java" import="java.util.*" pageEncoding="GB2312" contentType="text/html;charset=GB2312"%>
<%//@ page errorPage="ErrPage.jsp"%>
<%@ page import="java.io.*" %>
<%@ page import="java.util.Hashtable" %>
<%@ page import="org.w3c.dom.*" %>
<%@ page import="org.xml.sax.*" %>
<%@ page import="javax.xml.parsers.SAXParserFactory" %>
<%@ page import="javax.xml.parsers.SAXParser" %>
<%@ page import="com.xml.test.SAXHandler" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>剖析XML文件people.xml</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
String filename = "d:\\people.xml";
File file = new File(filename);
FileReader reader = new FileReader(file);
Parser parser;
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
SAXHandler handler = new SAXHandler();
sp.parse(new InputSource(reader),handler);
Hashtable hashTable = handler.getTable();
%>
<table border=2>
<caption>信息表</caption>
<tr>
<td>姓名</td>
<td><%= (String)hashTable.get(new String("name")) %></td>
</tr>
<tr>
<td>学院</td>
<td><%= (String)hashTable.get(new String("college")) %></td>
</tr>
<tr>
<td>电话</td>
<td><%= (String)hashTable.get(new String("telephone")) %></td>
</tr>
<tr>
<td>备注</td>
<td><%= (String)hashTable.get(new String("notes")) %></td>
</tr>
</table>
</body>
</html>