公司要使用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;
}
分享到:
相关推荐
在Java编程中,数据结构与XML(eXtensible Markup ...通过实践这些示例,你可以更好地理解并掌握Map和List与XML之间的转换技巧。在进行这样的转换时,确保处理好异常、空值和特殊字符,以确保数据的完整性和安全性。
"java转换xml、list、map和json" ...本文主要讲述了Java中将xml、list、map和json之间的转换的相关知识点,包括xml和map之间的转换、xml和list之间的转换、xml和json之间的转换、map和json之间的转换等。
例如,如果你有一个包含List<Map<String, String>>的对象,JAXB会将其转换为XML元素结构。 以下是发布带有复杂类型参数的RESTful Web服务的基本步骤: 1. **定义数据模型**:创建对应的Java类,如`ComplexObject`...
Map<String, Object> rowMap = new HashMap<>(); for (int i = 0; i < row.getLastCellNum(); i++) { Cell cell = row.getCell(i); // 跳过空单元格 if (cell == null || cell.getCellType() == CellType.BLANK...
在与服务器进行数据交互时,我们将List和Map转换为JSON格式,以便于传输。 要实现jQuery的Ajax调用,我们需要使用`$.ajax()`函数。这个函数提供了一种灵活的方式,可以配置请求的所有方面,包括URL、数据类型、请求...
Map<String, String> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); JSONObject jsonObject = new JSONObject(map); ``` 然后,你可以通过Ajax发送这个JSON字符串到服务器。例如...
Map<String, Object> myMap = new HashMap<>(); // 填充Map... Gson gson = new Gson(); String jsonString = gson.toJson(myMap); ``` 2. **JSON转Map** 将JSON字符串解析回`Map`,同样使用`Gson`库,但...
java后台从数据库读取 数据,封装到list集合,控制层转化为XML格式数据
>"<IbpsBankCodeConf>" + " <ibps code='322'>" + " <ibps name='测试银行' ECFlag='2' paySysBankCode='322290000011' eisBankCode='null' eisSiteCode='1' />\n" + " <ibpsName name='测试银行爱博家园支行' ...
本篇将详细介绍XStream如何处理XML与Java对象的相互转换,以及如何处理List、Map等集合类型的数据。 首先,XStream是一个强大的库,它由Pete Gyford开发,用于将Java对象序列化为XML,同时也能将XML反序列化为Java...
plugin</artifactId><version>3.7.0</version><configuration><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><...></path><path><groupId>org.mapstruct</groupId><artifactId>mapstruct...
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 获取客户端的...
Map<String, Object> data = new HashMap<>(); data.put("title", "报告标题"); data.put("content", "这是报告内容..."); // 添加更多数据... ``` 步骤四:生成HTML字符串 使用FreeMarker的`Template`类加载模板...
在Spring中,处理日期类型时,我们可能遇到字符串与日期之间的转换问题。有两种主要方法来解决这个问题: a. **自定义类型转换器**:创建一个类继承`PropertyEditorSupport`,并覆盖`setAsText`方法,例如`...
在Java编程中,将数据结构如`Map`转换为XML格式是一种常见的需求,尤其是在处理配置文件、数据交换或与Web服务交互时。以下是对如何实现这一转换的深入解析,涵盖了代码逻辑、关键步骤以及可能遇到的问题。 #### 一...
总之,Java List与XML之间的转换是数据交换和持久化的重要手段,而dom4j库提供了一种方便的方式来实现这种转换。通过熟练掌握这些概念和方法,开发者可以更好地在Java应用程序中处理结构化的数据。
<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>...
<value>classpath:dozerBeanMapping.xml</value> </list> </property> </bean> ``` 在上面的代码中,我们定义了一个名为mapper的Bean,用于加载dozerBeanMapping.xml文件。在dozerBeanMapping.xml文件中,我们...
将xml串转换成Map类型,如果有重复节点,自动转换为list类型存储,所以最终转换并非绝对Map
当传入的参数是一个List时,`<foreach>`标签的`collection`属性应设置为`list`。例如,以下是一个查询员工的例子,其中`list`参数包含员工ID的列表: ```xml <select id="getEmployeesListParams" resultType=...