Dom4j解析和處理xml文檔
本文將介紹
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); }
}</pre>
asXML可以將文檔或元素轉換成一段xml字符串
String docStr=doc.asXML(); //把xml文檔轉換成字符串 System.out.println("docStr==="+docStr); String pdsStr=pds.asXML(); //把父節點轉換成字符串 System.out.println("pdsStr=="+pdsStr); //結果如插圖所示</div>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文檔“本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!