公司要使用XML传入数据,需要将List<Map>结构的数据转换为XML。
实现方法已经完成,贴出来备忘。
1.XML的根节点的建立
/**
* 类转xml方法.
* @param data List<?>
* @return String
* @throws
*/
public String map2xml(Map map) {
Document document = DocumentHelper.createDocument();
Element nodesElement = document.addElement("ROOT");
map2xml(map,nodesElement);
return doc2String(document);
}
/**
* 类转xml方法.
* @param data List<?>
* @return String
* @throws
*/
public String list2xml(List<?> list) {
Document document = DocumentHelper.createDocument();
Element nodesElement = document.addElement("DATA");
list2xml(list,nodesElement);
return doc2String(document);
}
2.XML转String 用dom4j的功能实现
/**
* xml转为String.
* @param document
* @return
* @throws
*/
public String doc2String(Document document) {
String s = "";
try {
// 使用输出流来进行转化
ByteArrayOutputStream out = new ByteArrayOutputStream();
// 使用UTF-8编码
OutputFormat format = new OutputFormat(" ", true, "UTF-8");
XMLWriter writer = new XMLWriter(out, format);
writer.write(document);
s = out.toString("UTF-8");
} catch (Exception ex) {
ex.printStackTrace();
}
return s;
}
3.List2XML方法实现
/**
* List2XML,目前支持List<List> List<Map> List<Map<String,List>>等只有
* List Map 组合的数据进行转换.
* @param list
* @param element
* @return
* @throws
*/
public Element list2xml(List list,Element element){
int i = 0;
for (Object o : list) {
Element nodeElement = element.addElement("LIST");
if (o instanceof Map) {
nodeElement.addAttribute("type", "o");
Map m = (Map) o;
for (Iterator iterator = m.entrySet().iterator(); iterator.hasNext();) {
Entry entry = (Entry) iterator.next();
Element keyElement = nodeElement.addElement(entry.getKey().toString());
if (entry.getValue() instanceof List) {
keyElement.addAttribute("type", "l");
list2xml((List) entry.getValue(),keyElement);
} else {
keyElement.addAttribute("type", "s");
keyElement.setText(entry.getValue().toString());
}
}
} else if (o instanceof List) {
nodeElement.addAttribute("type", "l");
list2xml((List)o,nodeElement);
}
else {
Element keyElement = nodeElement.addElement("value");
keyElement.addAttribute("num", String.valueOf(i));
keyElement.setText(String.valueOf(o));
}
i++;
}
return element;
}
4.xml2List
/**
* xml转List方法.
* @param xml
* @return List<?>
* @throws
*/
public List<?> xml2List(String xml){
try {
List list = new ArrayList();
Document document = DocumentHelper.parseText(xml);
Element nodesElement = document.getRootElement();
List nodes = nodesElement.elements();
for (Iterator its = nodes.iterator(); its.hasNext();) {
Element nodeElement = (Element) its.next();
if(("l").equals(nodeElement.attributeValue("type"))){
List s = xml2List(nodeElement.asXML());
list.add(s);
s = null;
}else if(("o").equals(nodeElement.attributeValue("type"))){
Map map = xml2Map(nodeElement.asXML());
list.add(map);
map = null;
}else{
list.add(nodeElement.getText());
}
}
nodes = null;
nodesElement = null;
document = null;
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
5.XML2MAP
/**
* xml 2 map
* @param xml
* @return
*/
public Map xml2Map(String xml) {
try {
Map map = new HashMap();
Document document = DocumentHelper.parseText(xml);
Element nodeElement = document.getRootElement();
List node = nodeElement.elements();
for (Iterator it = node.iterator(); it.hasNext();) {
Element elm = (Element) it.next();
if("l".equals(elm.attributeValue("type"))){
map.put(elm.getName(), xml2List(elm.asXML()));
}else if("o".equals(elm.attributeValue("type"))){
map.put(elm.getName(), xml2Map(elm.asXML()));
}else{
map.put(elm.getName(), elm.getText());
}
elm = null;
}
node = null;
nodeElement = null;
document = null;
return map;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
分享到:
相关推荐
<P>map集合转化成xml字符串</P> <P>xml字符串转化成map集合</P> <P>list集合转化成xml字符串</P> <P>xml字符串转化成list集合</P>
java转换xml、list、map和json
>"<IbpsBankCodeConf>" + " <ibps code='322'>" + " <ibps name='测试银行' ECFlag='2' paySysBankCode='322290000011' eisBankCode='null' eisSiteCode='1' />\n" + " <ibpsName name='测试银行爱博家园支行' ...
4 对象与XML的转换 <br>第18章 Java Mail <br>18. 1 使用SMTP协议发送简单邮件 <br>18. 2 发送带附件的邮件 <br>18. 3 给多人发送邮件 <br>18. 4 使用POP3接收邮件 <br>第19章 JSP与Servlet <br>19. 1 获取客户端的...
<br>Safari 2 3575ms 475ms 753% <br>Opera 9.1 3196ms 326ms 980% <br>Average improvement: 867% <br><br>下表为jQuery1.1.3与常用的一些JS库选择器的对比:<br>Browser Prototype jQuery Mootools Ext Dojo <br>...
将xml串转换成Map类型,如果有重复节点,自动转换为list类型存储,所以最终转换并非绝对Map
NULL 博文链接:https://bugyun.iteye.com/blog/2278997
通过fastjson实现了JavaBean,list<JavaBean>,MAP,list<String>等格式与json格式之间的转换,已经附带fastjson的包,包的版本为fastjson-1.1.36.jar
前段时间找了好久xml与object之间的转换都没找到!最近在学习WebService,讲到JAXB!没听说过!看了才知道jdk中自带了这个功能,什么这个...List Map 继承 接口 数据类型不一至的一异常 父子类的转换 <<<<--->>>> xml
转换XML配置文件(从1x到20) 使用新的JAR文件 SQL Map XML配置文件 <properties>元素 <setting>元素 <typeAlias>元素 <transactionManager>元素 <datasource>元素 <sqlMap>元素 SQL Map XML映射文件 Mapped ...
<p>one</p> <div><p>two</p></div> <p>three</p> jQuery 代码: $("div > p"); 结果: [ <p>two</p> ] -------------------------------------------------------------------------------- 在文档的第一个表单...
除了无法访问它的大小和不能使用索引来获得它的子变量:集合可以看作只能由<#list...>指令使用的受限sequences。 5、 方法:通过传递的参数进行计算,以新对象返回结果 方法变量通常是基于给出的参数计算值在数据...
java转换xml、list、map和json.docxjava转换xml、list、map和json.docx
public List<string> GetDeleteAndInsertXmlSql(Object o, string xml, List<string> keys) 4、增加集成了盘古中文分词 更多范例请参考 http://hi.baidu.com/earthsearch 注:使用范例时:请先引用所有的DLL类库 ...
文件里包含jar包 dom4j-1.6.1.jar,list中放多个map,map里随意放键值对,最后可转换为xml文档,xml文档也可以解析存入list文件中
<#list animals as being><br> <li>${being.name} for ${being.price} Euros<br> <#list><br> <u1><br> </body><br> </html> 1, FTL指令规则 在FreeMarker中,使用FTL标签来使用指令,FreeMarker有3种FTL标签,这和...
java转换xml、list、map和json.pdf
默认的时候DWR将java void值转换成javascript的null值就是这样设置<convert converter="null" match="void"/>. 有时java.lang.Void也需要进行这样的转换,所以设置也是相似的<convert converter="null" match="java....
java转换xml、list、map和json[借鉴].pdf
java转换xml、list、map和json(20210924214538)[借鉴].pdf