欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-01-02 15:57:22
...

解析xml参数并返回xml格式数据
本文介绍接口xml参数解析,以及查询数据后返回xml数据。
1、xml参数如下:
解析xml参数并返回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、返回结果如下图:
解析xml参数并返回xml格式数据

相关标签: javaee

上一篇:

下一篇: