Dom4j解析XML資料
本例項基於現實工作而來,主要是在實際的開發過程中,一直使用的XML解析工具類是XStream。但是在實際使用過程中卻發現,它是針對XML資料完全解析,這就意味著,若是在要解析的XML中出現亂碼等未知事件時,你將束手無策,只能任由一顆老鼠屎壞了一鍋湯。但不可否認XStream的好處是,整體解析,不需太多在意其內部結構,但基本的層級關係還是需要你來構造的。
為了解決這一問題,我換成Dom4j,針對其中的每一個節點進行解析,並處理可能發生的異常。下面直接上程式碼(CollectResult為我構造裝配結果的實體):
/**
* Dom4j 解析收藏使用者列表
*
* @param xml
* @return CollectResult
* @author chengjinqi
*/
public static CollectResult parseStringXml(String xml) {
CollectResult collectResult = new CollectResult();
Document doc;
try {
doc = DocumentHelper.parseText(xml); // 將字串轉為XML
Element root = doc.getRootElement();// 獲取根節點
try {
collectResult.setCount(Integer.parseInt(root.elementTextTrim("count")));
collectResult.setResultCode(Integer.parseInt(root.elementTextTrim("result_code")));
} catch (Exception e) {
logger.error("parse int error." + e);
}
collectResult.setMessage(root.elementTextTrim("message"));
//遍歷list節點
List<CollectItem> list = new ArrayList<CollectItem>();
Iterator it = root.elementIterator("list");
while (it.hasNext()) {
//遍歷item節點
try {
Element element = (Element) it.next();
Iterator iterator = element.elementIterator("item");
while (iterator.hasNext()) {
Element itemEle = (Element) iterator.next();
CollectItem collectItem = new CollectItem();
collectItem.setId(itemEle.elementTextTrim("userid"));
try {
collectItem.setName(itemEle.elementTextTrim("username"));
} catch (Exception e) {
logger.error("user name parse xml error." + e);
}
list.add(collectItem);
}
} catch (Exception e) {
logger.error("foreach parse xml error. " + e);
}
}
CollectList collectList = new CollectList();
collectList.setCollectItems(list);
collectResult.setCollectList(collectList);
} catch (DocumentException e) {
logger.error("DocumentException parse xml error. " + e);
}
return collectResult;
}
相關文章
- dom4j解析xmlXML
- 使用dom4j 解析, 操作XMLXML
- 使用Dom4j解析XML案例XML
- java的XML解析(DOM4J技術)JavaXML
- Java DOM4J 方式解析XML檔案JavaXML
- 用dom4j,解析xml 最好、最方便!XML
- XML資料解析XML
- DOM4J 解析 XML 之忽略轉義字元XML字元
- 用dom4j SAXReader解析xml檔案及字串XML字串
- Java解析XML彙總(DOM/SAX/JDOM/DOM4j/XPath)JavaXML
- Dom4j 操作 XMLXML
- 【菜鳥學Java】9:使用dom4j解析jdbc.xmlJavaJDBCXML
- JAVA-使用SAX解析XML資料JavaXML
- 單例設計模式中使用dom4j來完成(資料庫配置檔案)xml的解析,並完成資料庫的連線單例設計模式資料庫XML
- dom4j遍歷巢狀xml巢狀XML
- Dom4j 讀寫XML簡介XML
- dom4j讀寫xml檔案XML
- NPM酷庫051:xml2js,解析XML格式資料NPMXMLJS
- Android 中 XML 資料解析詳解AndroidXML
- iOS開發之解析XML格式資料iOSXML
- dom4j 讀取網路的xmlXML
- 利用dom4j來生成xml檔案XML
- Dom4j 讀 xml 時,遇到 xml 無效字元,報錯:An invalid XML characterXML字元
- dom4j 學習 -- 封裝dom4j工具類+如何使用dom4j解析封裝
- Xml解析XML
- Dom4j解析【開發中常用】
- Android之深入理解xml資料的pull解析AndroidXML
- java學習:使用dom4j讀寫xml檔案JavaXML
- 資料庫和XML __ 從資料庫中提取xml資料庫XML
- iOS – XML解析iOSXML
- go 解析xmlGoXML
- xml php 解析XMLPHP
- iOS - XML解析iOSXML
- 【Java】解析xmlJavaXML
- Java解析XMLJavaXML
- jaxb解析xmlXML
- DOM解析XMLXML
- XML資料島(XML Data Island) (轉)XML