解析xml参数并返回xml格式数据

解析xml参数并返回xml格式数据
本文介绍接口xml参数解析,以及查询数据后返回xml数据。
1、xml参数如下:
在这里插入图片描述
2、解析参数

  //将字符串转换为XML
  Document doc=DocumentHelper.parseText(userInfo);
		  //获取根节点
		  Element rootElt = doc.getRootElement(); 
		  //获取子节点迭代器
		  Iterator <Object> iter=rootElt.elementIterator();
		  String userId="";
		  String userName="";
		  while(iter.hasNext()){
			  //获取子节点
			  Element el1=(Element)iter.next();
			  //获取子节点存放值的list
			  List&lt;DefaultText&gt; data=el1.content();
			  String name=el1.getName();
			  String text="";
			 for (DefaultText defaultText : data) {
				 //获取子节点的值
				 text=defaultText.getText();
			   }
			 //判断当前节点名称
			 if(name.equals("userID")){
				 userId=text;
			 }else{
				 userName=text;
			 } 
			 
		  } 

3、根据实际需求查出list
4、要求返回的xml格式

<?xml version="1.0" encoding="UTF-8"?>

<sysInfo>
<item>
< projectBM>BM001 < /projectBM>
< projectID>0001 < /projectID>
< projectName> test1< /projectName>
</item>
<item>
<projectBM>BM002 </projectBM>
<projectID>0002 </projectID>
<projectName>test2</projectName>
</item>
</sysInfo>
4、编写转换方法

   /**
     * Json to xmlstr string.
     *
     * @param jObj   the j obj
     * @param buffer the buffer
     * @return the string
     */
    public static StringBuffer jsonToXmlstr(JSONObject jObj,StringBuffer buffer ){
        Set<Map.Entry<String, Object>> se = jObj.entrySet();
        for(Iterator<Map.Entry<String, Object>> it = se.iterator(); it.hasNext(); )
        {
            Map.Entry<String, Object> en = it.next();
            if(en.getValue().getClass().getName().equals("com.alibaba.fastjson.JSONObject")){
                buffer.append("<"+en.getKey()+">");
                JSONObject jo = jObj.getJSONObject(en.getKey());
                jsonToXmlstr(jo,buffer);
                buffer.append("</"+en.getKey()+">");
            }else if(en.getValue().getClass().getName().equals("com.alibaba.fastjson.JSONArray")){
                JSONArray jarray = jObj.getJSONArray(en.getKey());
                for (int i = 0; i < jarray.size(); i++) {
                    buffer.append("<"+en.getKey()+">");
                    JSONObject jsonobject =  jarray.getJSONObject(i);
                    jsonToXmlstr(jsonobject,buffer);
                    buffer.append("</"+en.getKey()+">");
                }
            }else if(en.getValue().getClass().getName().equals("java.lang.String")){
                buffer.append("<"+en.getKey()+">"+en.getValue());
                buffer.append("</"+en.getKey()+">");
            }
        }
        return buffer;
    }
	

5、封装成xml数据返回,这里导入包为import org.dom4j.*相关包。

	         Document document = DocumentHelper.createDocument();
			 document.setXMLEncoding("utf-8");	 
			JSONArray jsonArr = JSONArray.fromObject(list);
			 StringBuffer buffer = new StringBuffer();
			 //拼接xml的声明及父标签
	         buffer.append("<?xml version=\"1.0\" encoding=\"utf-8\"?><sysInfo>
	         //循环list数据
			for(int i=0;i<jsonArr.size();i++){
			//拼接每个数据项的子标签
				buffer.append("<item>");
            JSONObject jsonObject=(JSONObject)jsonArr.get(i);
				//动态根据数据拼接标签
		        buffer=jsonToXmlstr(jsonObject,buffer);
		        buffer.append("</item>");	
			}
			//拼接父标签结束标签
			buffer.append("</sysInfo>");

6、返回结果如下图:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值