Dom4j解析和处理xml文档
jopen
12年前
本文将介绍
1.如何通过dom4j来对xml文档进行增、删、改、查
2.如何从本地读入xml文档
3.如何把xml文档转换成xml字符串
4.如何把xml输出以指定的编码输出到xml文档。
5.如何把xml字符串转换成document。
创建document、添加节点、属性及注释
package com.xml.dom4j; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.XMLWriter; /** * 创建document * @return */ public static Document createDomFJ(){ Document doc =DocumentHelper.createDocument(); return doc; } /** * 给文档添加根节点 * @param elName 子节点名称 * @param doc 文档 * @return */ public static Element appendChile(String elName,Document doc){ Element root=doc.addElement(elName); return root; } /** * 给父节点添加子节点 * @param elName 子节点的名称 * @param el 父节点 * @return */ public static Element appendChile(String elName,Element el){ Element sub=el.addElement(elName); return sub; } /** * 添加子节点及其对应的值 * @param elName 子节点的名称 * @param value 子节点的值 * @param el 父节点 */ public static void appendChile(String elName,String value,Element el){ Element sub=el.addElement(elName); sub.setText(value); } /** * 根目录添加注释 * @param explain 说明文字 * @param doc */ public static void addCommend(String explain,Document doc){ doc.addComment(explain); } /** * 为子节点添加说明 * @param explain * @param element */ public static void addCommend(String explain,Element element){ element.addComment(explain); } /** * 为节点添加属性 * @param attName * @param attValue * @param element */ public static void addAttribute(String attName,String attValue,Element element){ element.addAttribute(attName, attValue); } }
asXML可以将文档或元素转换成一段xml字符串
String docStr=doc.asXML(); //把xml文档转换成字符串 System.out.println("docStr==="+docStr); String pdsStr=pds.asXML(); //把父节点转换成字符串 System.out.println("pdsStr=="+pdsStr); //结果如插图所示
parseText完成将xml字符串转换成Doc的功能
String pdsStr=<PDS><HEAD><TRNCOD>交易代码</TRNCOD><LGNNAM>登陆名称</LGNNAM></HEAD></PDS>; Document docpds=null; try { docpds=DocumentHelper.parseText(docStr); docpds.setXMLEncoding("GBK"); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); }
XMLWriter类可以把文档写入到文件中,并设置编码“GBK”
public class JavaCreateDom4j { public static void main(String[] args){ //引用http://www.blogjava.net/hoojo/archive/2011/08/11/356310.html Document doc=createDomFJ(); doc.addComment("以GBK的编码"); Element pds=doc.addElement("PDS"); /*格式化输出*/ org.dom4j.io.OutputFormat format=org.dom4j.io.OutputFormat.createPrettyPrint();//紧缩 format.setEncoding("GBK"); //设置GBK编码 Element head=pds.addElement("HEAD"); Element trancod=head.addElement("TRNCOD"); trancod.setText("交易代码"); Element lgnnam=head.addElement("LGNNAM"); lgnnam.setText("登陆名称"); try { XMLWriter writer=new XMLWriter(new OutputStreamWriter(new FileOutputStream("d:/test/xml/dom4jtest1.xml")),format); writer.write(doc); writer.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
递归显示xml文档内容
//文件格式: <?xml version="1.0" encoding="GBK"?> <!--以GBK的编码--> <PDS> <HEAD> <TRNCOD>交易代码</TRNCOD> <LGNNAM>登陆名称</LGNNAM> </HEAD> <body> <name>张学友</name> </body> </PDS> ===================================== import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; public class JavaCreateDom4j { public static void main(String[] args){ //读取xml文档 SAXReader saxReader=new SAXReader(); Document doc=null; try { doc =saxReader.read(new FileInputStream(new File("d:/test/xml/dom4jtest1.xml"))); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } List<Element> listEl=doc.getRootElement().elements(); print(listEl); } /** * 递归显示文档内容 * @param els elements数组 */ public static void print(List<Element> els){ for(Element el:els){ System.out.println("##"+el.getName()+"--value=="+el.getTextTrim()); if(el.hasContent()){ print(el.elements()); } } } //结果见图”dom4j遍历xml文档“