Java 解析xml報文放入Map,並判斷所有xml標籤是否為空
在網上找了很久,找到的一個比較好的xml解析方法,封裝好的解析xml報文的方法:
public class analyxml{
public Map<String, Object> map = new HashMap<String, Object>();
public Map parse(String soap) throws DocumentException {
Document doc = DocumentHelper.parseText(soap);// 報文轉成doc物件
Element root = doc.getRootElement();// 獲取根元素,準備遞迴解析這個XML樹
getCode(root);
return map;
}
public void getCode(Element root) {
if (root.elements() != null) {
List<Element> list = root.elements();// 如果當前跟節點有子節點,找到子節點
for (Element e : list) {// 遍歷每個節點
if (e.elements().size() > 0) {
getCode(e);// 當前節點不為空的話,遞迴遍歷子節點;
}
if (e.elements().size() == 0) {
map.put(e.getName(), e.getTextTrim());
} // 如果為葉子節點,那麼直接把名字和值放入map
}
}
}
}
測試xml報文:
<?xml version="1.0" encoding="UTF-8"?>
<Service>
<Header>
<ServiceCode>FMSPAY0010</ServiceCode>
<ChannelId>04</ChannelId>
<ExternalReference>20181029085400000001</ExternalReference>
<RequestTime>20181023085400</RequestTime>
<TradeDate>20181023</TradeDate>
<Response>
<ReturnCode></ReturnCode>
<ResponseTime>20181105153740558</ResponseTime>
<ReturnMessage>銀行編號或密碼不正確!</ReturnMessage>
</Response>
</Header>
</Service>
測試類:
import java.util.Map;
import org.dom4j.DocumentException;
import com.com.analyxml;
public class test2 {
public static void main(String[] args) throws DocumentException {
// TODO Auto-generated method stub
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Service><Header><ServiceCode>FMSPAY0010</ServiceCode><ChannelId>04</ChannelId><ExternalReference>20181029085400000001</ExternalReference><RequestTime>20181023085400</RequestTime><TradeDate>20181023</TradeDate><Response><ReturnCode>9902</ReturnCode><ResponseTime>20181105161524325</ResponseTime><ReturnMessage>銀行編號或密碼不正確!</ReturnMessage></Response></Header></Service>";
analyxml aly = new analyxml();
Map map = aly.parse(xml);
String ReturnCode = map.get("ReturnCode").toString().trim();
String ResponseTime = map.get("ResponseTime").toString().trim();
System.out.println("ReturnCode===" + ReturnCode);
System.out.println("ResponseTime===" + ResponseTime);
}
}
結果為:
由於專案需要儘可能的把錯誤提示的明顯一點,(如果請求委託方的資訊有問題,委託方也會返回xml報文回來,但是所有標籤都是空值,)所以要判斷xml的所有標籤是否都是空值,在網上找了很久沒有找到合適的判斷xml是否為空的方法,於是寫了一個小方法,如下: (利用的是set集合的不可重複性)
public static boolean ishave(Map<String, Object> map){
//利用set的不可重複性來判斷Map中是否所有的value都是空
Set hs = new HashSet();
boolean status = false;
//遍歷Map
for (Entry<String, Object> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey());
System.out.println("value= " + entry.getValue());
hs.add(entry.getValue());
}
if(hs.size()>1){
status = true;
}
return status;
}
相關文章
- MyBatis的XML配置:如何判斷List為空並遍歷拼接MyBatisXML
- java判斷物件是否為空Java物件
- java判斷字串是否為空Java字串
- Java判斷欄位是否為空,為空賦值 ?Java賦值
- 如何在Java中判斷是否為空Java
- PbootCMS判斷標籤為空時不顯示各種條件判斷和標籤boot
- 判斷字串是否為空字串
- JavaScript判斷字串是否為空JavaScript字串
- js判斷物件是否為空JS物件
- Delphi Variant 判斷是否為空
- mysql如何判斷是否為空MySql
- js判斷字串是否為空JS字串
- java去除xml檔案中的標籤JavaXML
- Java解析XMLJavaXML
- 如何判斷 JavaScript 物件是否為空?JavaScript物件
- 判斷物件是否為空物件的方式物件
- 如何判斷一個物件是否為空?物件
- python如何判斷圖片是否為空Python
- ES6 判斷是否為空物件物件
- POM.xml 標籤詳解XML
- 判斷一個物件是否為空物件,判斷一個物件中是否有空值物件
- J2SE-判斷字串是否為空字串
- JS判斷物件是否為空物件的方法JS物件
- Java技巧分享:判斷字串是否為空常的三種方法Java字串
- PbootCMS整理判斷是否連結賦值各種條件判斷和標籤boot賦值
- 死磕Spring之IoC篇 - 解析自定義標籤(XML 檔案)SpringXML
- js系列文章之 : 判斷 object 物件是否為空JSObject物件
- 使用 Java 解析XML檔案JavaXML
- Xml解析XML
- mybatis原始碼配置檔案解析之五:解析mappers標籤(解析XML對映檔案)MyBatis原始碼APPXML
- 【python資料分析】判斷資料框是否為空Python
- PbootCMS判斷第一個迴圈項,並新增 class條件判斷和標籤boot
- go 解析xmlGoXML
- iOS – XML解析iOSXML
- python 判斷是否為中文Python
- python判斷是否為listPython
- Java 將HTML轉為XMLJavaHTMLXML
- JS如何判斷一個陣列是否為空、是否含有某個值JS陣列