jdom解析XML 中文
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>