xml解析为java集合对象.docx
《xml解析为java集合对象.docx》由会员分享,可在线阅读,更多相关《xml解析为java集合对象.docx(17页珍藏版)》请在冰豆网上搜索。
xml解析为java集合对象
一、Projectmenu截图:
二、Testmain截图:
三、doGetElementMapData截图:
四、doGetElementListMapData截图:
五、isRepeat截图:
六、测试xml截图:
七、xml转换集合对象截图:
八、源码:
一、java源码:
packagecom.test;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.Iterator;
importjava.util.List;
importjava.util.Map;
importorg.dom4j.Document;
importorg.dom4j.DocumentHelper;
importorg.dom4j.Element;
publicclassTestOne{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args)throwsException{
Stringstr="
xmlversion=\"1.0\"encoding=\"UTF-8\"?
>"+
""+
"代码
"+
" "+
" 保费"+
" "+
" "+
" 承保险别"+" "+" "+" 承保险别"+
" "+" "+" 承保险别"+
" "+" "+" 承保险别"+" "+
" "+" 承保险别"+" "+" "+" 承保险别"+
" "+" "+
" "+" "+
" "+" "+
" 吨位"+" "+
" 承保险别"+" 保险金额"+
" "+" "+
"";
System.out.println(str);
TestOneto=newTestOne();
Documentdoc=DocumentHelper.parseText(str);
Elementroot=doc.getRootElement();
Mapmap=to.doGetElementMapData(root,root.getName().trim());
System.out.println(map.toString());
}
/**
*获取所有非重复元素下的集合
*@paramroot
*@paramname
*@return
*@throwsException
*/
publicMapdoGetElementMapData(Elementroot,Stringname)throwsException{
List
Mapmap=newHashMap();
Iterator
>iter=root.elementIterator();
while(iter.hasNext()){
Elementelement=(Element)iter.next();
Stringnme=name+"-"+element.getName().trim();
intsize=element.elements().size();
if(size>0){//有子元素
booleanflag=isRepeat(element);
if(flag){//有重复项
listMap.addAll(doGetElementListMapData(element,nme));
}else{
map.putAll(doGetElementMapData(element,nme));
}
}else{
map.put(nme,element.getTextTrim());
}
}
if(null!
=listMap&&listMap.size()>0){
map.put(name,listMap);
}
returnmap;
}
/**
*获取重复元素下所有集合
*@paramroot
*@paramname
*@return
*@throwsException
*/
publicList>doGetElementListMapData(Elementroot,Stringname)throwsException{
List>listMap=newArrayList>();
Mapmap=newHashMap();
Iterator
>iter=root.elementIterator();
while(iter.hasNext()){
Elementelement=(Element)iter.next();
Stringnme=name+"-"+element.getName().trim();
intsize=element.elements().size();
if(size>0){//有子元素
booleanflag=isRepeat(element);
if(flag){//有重复项
listMap.addAll(doGetElementListMapData(element,nme));
}else{
listMap.add(doGetElementMapData(element,nme));
}
}else{
map.put(nme,element.getTextTrim());
}
}
if(!
map.isEmpty()){
listMap.add(map);
}
returnlistMap;
}
/**
*判断是否有重复元素
*@paramroot
*@return
*@throwsException
*/
publicbooleanisRepeat(Elementroot)throwsException{
intk=0;
Stringnum[]=newString[root.elements().size()];
Iterator
>iter=root.elementIterator();
while(iter.hasNext()){
Elementelement=(Element)iter.next();
num[k]=element.getName().trim();
k++;
}
for(inti=0;ifor(intj=i+1;jStringone=num[i].trim();
Stringtwo=num[j].trim();
if(one.equals(two)){
returntrue;
}
}
}
returnfalse;
}
}
二、测试xml源码:
xmlversion="1.0"encoding="UTF-8"?
>
代码
保费
承保险别
承保险别
承保险别
承保险别
承保险别
承保险别
吨位
承保险别
保险金额
三、集合对象源码:
{root-compulsory_insurance_detail-underwriting_details-type=承保险别,
root-compulsory_insurance_detail-tonnage=吨位,
root-compulsory_insurance_detail-underwriting_details-insured_amount=保险金额,
root-commercial_insurance_detail=[
{root-commercial_insurance_detail-underwriting_details-underwriting_detail-type=承保险别},
{root-commercial_insurance_detail-underwriting_details-underwriting_detail-type=承保险别},
{root-commercial_insurance_detail-underwriting_details-underwriting_detail=[
{root-commercial_insurance_detail-underwriting_details-underwriting_detail-details-detail-type=承保险别},
{root-commercial_insurance_detail-underwriting_details-underwriting_detail-details-detail-type=承保险别},
{root-commercial_insurance_detail-underwriting_details-underwriting_detail-details-detail-type=承保险别}
],root-commercial_insurance_detail-underwriting_details-underwriting_detail-type=承保险别}
],
root-code=代码,
root-commercial_insurance_detail-premium=保费}