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;
}
相關文章
- java的XML解析(DOM4J技術)JavaXML
- DOM4J 解析 XML 之忽略轉義字元XML字元
- XML和Dom4jXML
- dom4j遍歷巢狀xml巢狀XML
- NPM酷庫051:xml2js,解析XML格式資料NPMXMLJS
- Xml解析XML
- Java解析XMLJavaXML
- go 解析xmlGoXML
- iOS – XML解析iOSXML
- python之XML解析PythonXML
- 175.XML解析XML
- C# XML解析C#XML
- 【超好用API推薦】用dom4j建立XML檔案並寫入節點APIXML
- Python XML解析之DOMPythonXML
- python XML 檔案解析PythonXML
- jdom解析xml檔案XML
- XML 檔案解析實踐 (DOM 解析)XML
- MySQL load xml載入資料MySqlXML
- XML解析-最快的方式SAXXML
- 使用DocumentBuilderFactory解析XML淺談UIXML
- XML DOM 解析器概述XML
- 使用 Java 解析XML檔案JavaXML
- JSP筆記-XML 資料處理JS筆記XML
- Python解析XML檔案生成HTMLPythonXMLHTML
- 搞懂 XML 解析,徒手造 WEB 框架XMLWeb框架
- 【spring原始碼系列】之【xml解析】Spring原始碼XML
- 資料解析
- 【mybatis xml】資料層框架應用--Mybatis 基於XML對映檔案實現資料的CRUDMyBatisXML框架
- 如何用python分析xml獲取資料?PythonXML
- 處理XML資料應用實踐XML
- 【Go學習筆記16】解析xmlGo筆記XML
- XML DOM 解析器錯誤概述XML
- Godot 解析資料Go
- datatable資料解析
- java使用jaxb解析XML(含根據xml自動生成實體類)JavaXML
- Python lxml :從網頁HTML/XML提取資料PythonXML網頁HTML
- springMVC---配置檔案解析(web.xml)SpringMVCWebXML
- 基於 DOM 的 XML 檔案解析類XML
- c#(解析xml檔案基礎方法)C#XML