【XML文件如下】
<?xml version="1.0" encoding="GBK"?>
<ROOT>
<SYSTEM>
<SYSTEM_ID><![CDATA[test]]></SYSTEM_ID>
<CHECK_CODE><![CDATA[test]]></CHECK_CODE>
<SYS_ORGAN_ID><![CDATA[11]]></SYS_ORGAN_ID>
</SYSTEM>
<REF>
<HOST_INFO_ID><![CDATA[22]]></HOST_INFO_ID>
<GUEST_INFO_ID><![CDATA[33]]></GUEST_INFO_ID>
</REF>
<INFOEXTERNALFILES>
<FILE>
<FILE_NAME><![CDATA[1111]]></FILE_NAME>
<FILE_URL><![CDATA[22222]]></FILE_URL>
</FILE>
<FILE>
<FILE_NAME><![CDATA[33333]]></FILE_NAME>
<FILE_URL><![CDATA[444444]]></FILE_URL>
</FILE>
</INFOEXTERNALFILES>
<ATTACHMENTS>
<ATTACHMENT>
<ATCH_ID><![CDATA[304457]]></ATCH_ID>
<ATCH_NAME><![CDATA[d0c8a786c9177f3e82bb1f4a71cf3bc79e3d56ee]]></ATCH_NAME>
<FILE_NAME><![CDATA[d0c8a786c9177f3e82bb1f4a71cf3bc79e3d56ee.jpg]]></FILE_NAME>
</ATTACHMENT>
<ATTACHMENT>
<ATCH_ID><![CDATA[304457]]></ATCH_ID>
<ATCH_NAME><![CDATA[c2fdfc039245d688205f5ee3a5c27d1ed21b241c]]></ATCH_NAME>
<FILE_NAME><![CDATA[c2fdfc039245d688205f5ee3a5c27d1ed21b241c.jpg]]></FILE_NAME>
</ATTACHMENT>
</ATTACHMENTS>
</ROOT>
public class ResolveParamXml {
public void getParamXml(String filename, HashMap hm){
SAXReader saxReader = new SAXReader();
Document doc = null;
try {
doc = saxReader.read(new File(filename));
Element root = doc.getRootElement();
int num = -1;
int fcont = 0;
int acont = 0;
Iterator iterator = root.elementIterator();
while(iterator.hasNext()){
Element elment =(Element) iterator.next();
Iterator it = elment.elementIterator();
while(it.hasNext()){
Element element = (Element)it.next();
if(element.getName().equals("FILE")){
fcont++;
//System.out.println(fcont+" :file 标签出现的次数");
}
if(element.getName().equals("ATTACHMENT")){
acont++;
//System.out.println(acont+" :attachment 标签出现的次数");
}
hm.put(element.getName(), element.getText());
Iterator itor = element.elementIterator();
if(itor.hasNext()){
num++;
}
while(itor.hasNext()){
Element e = (Element)itor.next();
System.out.println(e.getName()+num+" : "+e.getText());
hm.put(e.getName()+num,e.getText());
}
}
}
hm.put("FILE",String.valueOf(fcont));
hm.put("ATTACHMENT",String.valueOf(acont));
} catch (DocumentException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
public static void main(String [] args){
ResolveParamXml rpx = new ResolveParamXml();
HashMap hashMap = new HashMap();
rpx.getParamXml("D:\\asdf.xml", hashMap);
System.out.println(hashMap.get("SYSTEM_ID"));
System.out.println(hashMap.get("CHECK_CODE"));
System.out.println(hashMap.get("SYS_ORGAN_ID"));
System.out.println(hashMap.get("HOST_INFO_ID"));
System.out.println(hashMap.get("GUEST_INFO_ID"));
int fcont = Integer.parseInt(hashMap.get("FILE").toString());
int acont = Integer.parseInt(hashMap.get("ATTACHMENT").toString());
for (int i = 0; i < fcont; i++) {
System.out.println(hashMap.get("FILE_NAME" + i));
System.out.println(hashMap.get("FILE_URL" + i));
}
for (int i = fcont; i < acont+fcont; i+=1) {
System.out.println(hashMap.get("ATCH_ID"+i));
System.out.println(hashMap.get("ATCH_NAME"+i));
System.out.println(hashMap.get("FILE_NAME"+i));
}
}
}