解析xml参数并返回xml格式数据
程序员文章站
2024-01-02 15:57:22
...
解析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<DefaultText> 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格式
<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格式数据
-
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节_jquery
-
javascript解析ajax返回的xml和json格式数据实例详解
-
PHP以json或xml格式返回请求数据的方法
-
javascript解析ajax返回的xml和json格式数据实例详解
-
Spring mvc实现Restful返回xml格式数据实例详解
-
简介Objective-C解析XML与JSON数据格式的方法
-
jQuery处理xml格式的返回数据(实例解析)
-
PHP以json或xml格式返回请求数据的方法
-
XMLHttpRequest处理xml格式的返回数据(示例代码)