xml转json时,一个list节点下面正好只有一个元素怎么办? 不就转成 json对象 了么?
给你一个思路 我以前写的
XMLWriter writer = null;// 声明写XML的对象
SAXReader reader = new SAXReader();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");// 设置XML文件的编码格式
String filePath = "测试导入.xml";
File file = new File(filePath);
Document dom = reader.read(file);
Element root = dom.getRootElement();
String rootXmlText=root.asXML();
Document dom1 = DocumentHelper.parseText(rootXmlText);
Element root1 = dom1.getRootElement();
Iterator iter = root1.elementIterator("errorResultList");//获取标签元素值
while (iter.hasNext()) {
Element recordEle = (Element) iter.next();
String text=recordEle.asXML();
org.json.JSONObject xmlJSONObj = XML.toJSONObject(text);
JSONObject j=JSON.parseObject(xmlJSONObj.get("errorResultList").toString());
}
你现在主要的问题就是1.拿到errorResultList,并循环errorResult 2.把errorResult转换成json,
我的while循环里面的那几个方法就是转换json的,你看看适不适用你这个业务。多尝试
xml文件的格式贴出来下呗
<response>
<success>false</success>
<retryLater>false</retryLater>
<errorCode>BATCH_OPERATE_ERROR</errorCode>
<errorMsg>batch operate error , please pay attention to errorResultList</errorMsg>
<errorResultList>
<errorResult>
<objectId>201808061423522459</objectId>
<errorInfoList>
<errorInfo>
<errorCode>ILLEGAL_PARAMETER_ERROR</errorCode>
<errorMsg>addressPair.receiveAddress.provinceName为空</errorMsg>
</errorInfo>
</errorInfoList>
</errorResult>
</errorResultList>
</response>
errorResult可以多个
依赖com.alibabafastjson1.2.8com.itextpdfitextpdf<!-- 5.4.3 -->5.5.9com.itextpdfitext-pdfa5.5.9com.itextpdfitext-xtra5.4.4com.itextpdf.toolxmlworker5.5.9com.itextpdfitext-asian5.2.0还一个dom4j的依赖 自己找一下
public QueueParam readXml(String path) {
QueueParam queueParam = new QueueParam();
try {
SAXReader reader = new SAXReader();
Document doc = reader.read(new File(path));
Element root = doc.getRootElement();
List<Element> list = root.elements();
Element batchIdEle = list.get(0).element("batchId");
String batchId = batchIdEle.getText();
String userId = list.get(0).elementText("userId");
String taskId = list.get(0).elementText("taskId");
String data = list.get(0).elementText("data");
queueParam = new QueueParam(taskId, batchId, userId, data);
} catch (Exception e) {
e.printStackTrace();
}
return queueParam;
}
package com.ifly.ibk.pojo;
public class QueueParam {
private String taskid;
private String batchid;
private String userid;
private String data;
public QueueParam() {
}
public QueueParam(String taskid, String batchid, String userid, String data) {
this.taskid = taskid;
this.batchid = batchid;
this.userid = userid;
this.data = data;
}
public String getTaskid() {
return taskid;
}
public void setTaskid(String taskid) {
this.taskid = taskid;
}
public String getBatchid() {
return batchid;
}
public void setBatchid(String batchid) {
this.batchid = batchid;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("{");
sb.append("\"taskid\":\"")
.append(taskid).append('\"');
sb.append(",\"batchid\":\"")
.append(batchid).append('\"');
sb.append(",\"userid\":\"")
.append(userid).append('\"');
sb.append(",\"data\":\"")
.append(data).append('\"');
sb.append('}');
return sb.toString();
}
}
只有一个和多个是一样的道理啊,你如果要返回list,就把一个对象add到list里面就行了啊