使用dom4j和xStream解析xml

xml格式

使用dom4j和xStream解析xml_第1张图片

根据会议届次获取普通立案提案(不包括合并提案)

服务名称

GetLAProposalList

服务说明

根据会议届次获取普通立案提案列表(不包括合并提案)

输入值

     01(当前为八届二次会议,对应会议ID为01)

(输入的参数是GetMeetingList接口方法中获取到的MeetingID)

 

详细参数

参数名称

参数说明

 类型

是否必填

meeting

会议届次

字符型

返回值

返回成功描述

True

      

       

提案Guid(唯一标识)

            提案编号

提案标题

            所属会议

            提案类型

            收件日期

            主提者Guid

主提者姓名

            联名委员Guids

            联名委员姓名

            执笔人Guid

执笔人姓名

提案小类

            提案大类

            建议主办单位

            建议协办单位

            主办单位Guid

主办单位名称

            协办单位Guids

            协办单位名称

           立案状态 (1:立案;2:合并;3:不立案;null或空:暂未审核)

立案时间

提案流转状态

            督办领导

            是否优秀提案

            是否市政协提案

            提案内容

           

                 提案附件(附件路径,可查看下载)

           

       

   

 

返回失败描述:

False

错误详细信息

直接获取返回的xml里面包含了太多内容,dom4j取特定节点下我们需要的内容。
public static String getXmlStr(String xml, String targetElementName) throws DocumentException {
   Document document = DocumentHelper.parseText(xml) ;
   Element root= document.getRootElement();
   String status = root.element("DATA").element("ReturnInfo").element("Status").getText();
   String res = "";
   if ("True".equals(status)) {
      Element target = root.element("DATA").element("UserArea").element(targetElementName);
      res = target.asXML();
   }
   return res;
}

调用webService接口并取需要的内容

main() {

HQService hq = new HQService(new URL("http://10.44.106.1/HQWebService/HQService.asmx?WSDL"));
HQServiceSoap hqs = hq.getPort(HQServiceSoap.class);
String parasXml = "83";
String res = hqs.getLAProposalList(validateData, parasXml);
res = StringUtil.getXmlStr(res, "ProposalList");

}

得到的结果应该是这样的

  

       

         。。。

       

       

          。。。

       

   

xStream用来实现xml和java类的直接转换

看一下实体类

public class ProposalInfo {
   public String RowGuid;
   public String ProposalNum;
   public String Title;
   。。。
   //省略get set
}
public class ProposalInfoList {
   public List list;

   public List getList() {
      return list;
   }

   public void setList(List list) {
      this.list = list;
   }
   
}

转换方法

public ProposalInfoList getProposals(String xml) {
   XStream xs = new XStream(new DomDriver());
   // 取别名,xml节点名和类对应(类名前带有包名,不然对应不上)
   xs.alias("ProposalList", ProposalInfoList.class);
   xs.alias("ProposalInfo", ProposalInfo.class); 
   // addImplicitCollection(Class ownerType, String fieldName),去掉集合类型生成xml的父节点
   // 意思是说 ProposalInfoList节点下去掉list节点,直接是ProposalInfo节点
   xs.addImplicitCollection(ProposalInfoList.class, "list");
   // 告诉XStream要忽略掉未知的XML要素(感觉用处不大)
   xs.ignoreUnknownElements();
   ProposalInfoList xmlp = (ProposalInfoList) xs.fromXML(xml);
   return xmlp;
}

ojbk

 

你可能感兴趣的:(使用dom4j和xStream解析xml)