日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

DocumentHelper和SAXReader解析XML字符串

發布時間:2024/4/14 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DocumentHelper和SAXReader解析XML字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在看湖北中煙OA門戶的項目,中煙門戶里面解析XML文檔使用的是DocumentHelper,之前做的智能導航項目里面解析XML使用的是SAXReader,很好奇它們有什么區別,于是就查資料將兩者的用法簡單總結了一下。

SAXReader用法示例

package com.eway.signature.action;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.SAXReader;public class UploadFile{private static Log logger = LogFactory.getLog(UploadFile.class);//要上傳的配置文件的路徑static String uploadCfgFile = "WEB-INF/conf/uploadfile.xml";Document uploadDocument;//文檔對象實體Map uploadMap = new HashMap();/*** 獲取配置文件的絕對路徑* @param request* @return*/private String getUploadCfgFilePath(ServletRequest request){return ((HttpServletRequest) request).getSession().getServletContext().getRealPath("uploadCfgFile");}/*** 初始化配置文件* @param request* @return*/private Document initUploadCfgDocument(ServletRequest request){SAXReader saxReader = new SAXReader();try {//得到指定文件,以流的形式對文件進行序列化FileInputStream fis = new FileInputStream(getUploadCfgFilePath(request));uploadDocument = (Document) saxReader.read(fis);} catch (FileNotFoundException e) {logger.debug(e);} catch (DocumentException e) {logger.debug(e);}return uploadDocument;}/*** 獲取配置文件* @param request* @return*/private Document getUploadCfgDocument(ServletRequest request){if (this.uploadDocument == null) {this.uploadDocument = initUploadCfgDocument(request);}return this.uploadDocument;}/*** 獲取某個指定ticket節點的配置屬性* @param request* @return*/private Map getUploadMap(ServletRequest request){Document uploadDocument = getUploadCfgDocument(request);//得到XML的根節點(message)Element root = uploadDocument.getRootElement();Iterator tickets = root.element("body").element("ticketNotify").elementIterator();//獲取ticketNotify節點下所有的ticket節點的配置屬性,并將其放到Map中while (tickets.hasNext()) {Element ticket = (Element) tickets.next();uploadMap.put("id", ticket.attributeValue("id"));uploadMap.put("dealTime", ticket.attributeValue("dealTime"));uploadMap.put("status", ticket.attributeValue("status"));}//Element.asXML方法,獲得包括該標簽的所有XML數據 // System.out.println(root.element("body").asXML());return uploadMap;} }

DocumentHelper的用法示例

package com.eway.signature.action;import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element;public class UploadFile{private static Log logger = LogFactory.getLog(UploadFile.class);//要上傳的配置文件的路徑static String uploadCfgFile = "WEB-INF/conf/uploadfile.xml";Document uploadDocument;//文檔對象實體Map uploadMap = new HashMap();/*** 獲取配置文件的絕對路徑* @param request* @return*/private String getUploadCfgFilePath(ServletRequest request){return ((HttpServletRequest) request).getSession().getServletContext().getRealPath("uploadCfgFile");}/*** 獲取配置文件* @param request* @return*/private Document getUploadCfgDocument(ServletRequest request){String sText;StringBuffer sb = new StringBuffer();try {//得到指定文件,以流的形式對文件進行序列化BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(getUploadCfgFilePath(request))));for (;;) {sText = br.readLine();//一行一行的讀取數據if(sText == null){break;}sb.append(sText);}uploadDocument = DocumentHelper.parseText(sb.toString());} catch (FileNotFoundException e) {logger.debug(e);} catch (DocumentException e) {logger.debug(e);} catch (IOException e) {logger.debug(e);}return uploadDocument;}/*** 獲取某個指定ticket節點的配置屬性* @param request* @return*/private Map getUploadMap(ServletRequest request){Document document = getUploadCfgDocument(request);//獲取根節點Element root = document.getRootElement();Iterator tickets = root.element("body").element("ticketNotify").elementIterator();//獲取ticketNotify節點下所有的ticket節點的配置屬性,并將其放到Map中while (tickets.hasNext()) {Element ticket = (Element) tickets.next();uploadMap.put("id", ticket.attributeValue("id"));uploadMap.put("dealTime", ticket.attributeValue("dealTime"));uploadMap.put("status", ticket.attributeValue("status"));}//Element.asXML方法,獲得包括該標簽的所有XML數據 // System.out.println(root.element("body").asXML());return uploadMap;}}

更多使用請參看DocumentHelper的在線API:

http://dom4j.sourceforge.net/dom4j-1.6.1/apidocs/org/dom4j/DocumentHelper.html#createAttribute%28org.dom4j.Element,%20org.dom4j.QName,%20java.lang.String%29

SAXReader可以直接使用read()方法將一個文件輸入流轉換成Document對象;而DocumentHelper不能直接操作文件輸入流,只能使用parseText()方法將string字符串解析成Document對象,所以必須先將文件輸入流寫到String字符串中,再由DocumentHelper去解析。

更多使用繼續發現中~

總結

以上是生活随笔為你收集整理的DocumentHelper和SAXReader解析XML字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。