前言
之前在网上找了很多没有找到合理的处理含有Cdata的xml 并且中含有集合没有找到自己根据理解写了一个方法。初学java希望大佬多多关照!话不多直接上代码
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom2</artifactId>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
</dependency>
import java.io.IOException;
import java.io.StringReader;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.xml.sax.InputSource;
String s =
“<data>”
+"<list>"
+ “<name><![CDATA[张三]]></name>”
+ “<phone><![CDATA[189391]]></phone>”
+"</list>"
+"<list>"
+ “<name><![CDATA[李四]]></name>”
+ “<phone><![CDATA[123456]]></phone>”
+"</list>"
+ “</data>”;
try {
StringReader sr = new StringReader(s);
InputSource is = new InputSource(sr);
SAXBuilder sab = new SAXBuilder();
Document document=sab.build(is);
Element element=document.getRootElement();
List<Element> es=element.getChildren();
JSONArray array=new JSONArray();
for (int i = 0; i < es.size(); i++) {
List<Element> es2=es.get(i).getChildren();
JSONObject json=new JSONObject();
for (Element element2 : es2) {
json.put(element2.getName().toString(), element2.getValue().toString());
System.out.println("key--"+element2.getName()+"value--"+element2.getValue());
}
array.add(json);
}
System.out.println(array);
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}