map的数据结构类似于数据库的数据存储方式,键和值的对应,之间的映射,更重要的一点是通过map.entry这个类似于指针的接口在外部对其进行任意的修改。在这里我们通过一个动态生成树的例子介绍一下它的用法吧...
网页中,树型目录菜单是一个很常见的菜单显示方式,通常我们都是利用已经设置好的数据通过客户端脚本拼装后展现,在树的结构比较简单或要求显示效果绚丽的话,是一个很好的选择。如果我们的树型目录是一个不断变化的树呢,比如用树来显示一个部门的所有员工的在线状态?
这时我们就需要考虑用后台实现了,通过map,我们假设它的key对应的是树的目录名称,key对应它的链接地址。如果有下级目录,则把该目录再封装到一个新的map中,作为主map的一个节点。这样就可以使用一个主map展现目录的所有内容了。
代码贴出来吧,发现这里的html代码编辑功能实在太差了-_-!!.
/**
* 列出树型列表的所有元素
* 该方法将把所有节点的元素展开,如果需要,应该在前台进行重新包装
* 这里要注意的是map的实现类要为TreeMap,其他类型的话,要修改
* equals(TreeMap.class) ,下面的另一个方法同理
* @param map
* @return
*/
public static String getType(Map map) {
Set set = map.entrySet();
Iterator it = set.iterator();
while (it.hasNext()) {// 把当前要遍历的节点当作根节点
Map.Entry entry = (Map.Entry) it.next();
if (entry.getValue().getClass().equals(TreeMap.class)) {// 下一级节点
System.out.println(entry.getKey());// 读取该节点的名称
getType((TreeMap) entry.getValue());
} else {// 到达该节点的顶点
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
return null;
}
利用迭代的方法可以写出取某节点下的所有内容、指定节点的内容等功能,方法大同小异,这里不敷述了。map的数据来源可以是多样的,最主要的是从数据库中取得数据,对于map如何和数据库数据进行映射,网上应该资料很多,关键在于把所需要的数据先包装到一个bo中,再对map进行填充。目前hibernate应该是不个不错的选择。
map于xml的转换,其实也是很简单的:
/**
* 将map类型数据转换成XML文档
*
* @param map
* 该节点
* @param element
* 上一级节点
* @return
*/
public void parseToXML(Map map, Element element) {
/** 开始对map进行解析 */
if (map == null)
throw new NullPointerException("map 数据为空,不能解析!");
Set set = map.entrySet();
Iterator records = set.iterator();
while (records.hasNext()) {
Map.Entry entry = (Map.Entry) records.next();
if (entry.getValue().getClass().equals(TreeMap.class)) {// 子目录
Element node = new Element("node");
node.setAttribute("name", entry.getKey().toString());
element.addContent(node);
parseToXML((TreeMap) entry.getValue(), node);
} else {// 到达顶点
Element node = new Element("node");
node.setAttribute("name", entry.getKey().toString());
Element value = new Element("value");
value.setText(entry.getValue().toString());
node.addContent(value);
element.addContent(node);
}
}
}
注意的是element是需要获取的,当我们声明了一个xml doc文档后,根节点root可以作为参数传进去,处理完后,再对root进行读取就可以了:
parseToXML(map, root);
doc = new Document(root);
这样我们就可以把map转换成一个树型目录了,具体的应用,随意了。
分享到:
相关推荐
在Java编程中,将数据结构如`Map`转换为XML格式是一种常见的需求,尤其是在处理配置文件、数据交换或与Web服务交互时。以下是对如何实现这一转换的深入解析,涵盖了代码逻辑、关键步骤以及可能遇到的问题。 #### 一...
总结来说,`EasyXmlUtil`是一个实用的Java工具类,它封装了XML与Map之间的相互转换功能,使得开发者能方便快捷地处理这两种数据格式。通过理解和使用此类,可以提高开发效率,简化数据处理的复杂性。在项目中,只需...
将xml串转换成Map类型,如果有重复节点,自动转换为list类型存储,所以最终转换并非绝对Map
"java转换xml、list、map和json" ...本文主要讲述了Java中将xml、list、map和json之间的转换的相关知识点,包括xml和map之间的转换、xml和list之间的转换、xml和json之间的转换、map和json之间的转换等。
- Apache Commons Digester库提供了一种规则驱动的方式来将XML转换为Map,通过定义匹配规则,当匹配到XML中的某个模式时,它会调用相应的处理方法。 4. **自定义转换器**: - 如果XML结构复杂,也可以自定义转换...
xml与map转换 这个应用的情况并不多见,一般都在两个系统间沟通的时候会有xml和json的相互转换。因为map和json是天生可相互转换的,所以这里只有xml能和map进行转换,那json就不是问题了。
在Java编程中,数据结构与XML(eXtensible Markup ...通过实践这些示例,你可以更好地理解并掌握Map和List与XML之间的转换技巧。在进行这样的转换时,确保处理好异常、空值和特殊字符,以确保数据的完整性和安全性。
将XML与Map进行互转是常见的需求,特别是在处理配置文件或者进行数据序列化时。本篇文章将详细介绍如何使用DOM4J库来实现XML和Map之间的转换,并讨论带有属性、无属性、有根节点和无根节点的情况。 DOM4J是一个强大...
NULL 博文链接:https://bugyun.iteye.com/blog/2278997
XML到MAP转换器的Golang编写的转换器 有时需要表示以前未知的结构。 这种通用表示形式通常是JSON,XML或数据映射结构形式的字符串。 类似于map [string] interface {}或map [interface {}] interface {}。 这是从...
将XML转换为Map可以使数据处理更加灵活,因为Map的键值对形式非常适合存储和操作键标识的数据。 首先,我们需要了解JAXB的基本用法。JAXB的工作原理是基于Java类来生成XML schema,或者反过来基于XML schema生成...
解析xml文件-转换map新增数据库解析xml文件-转换map新增数据库
这是一个很好用的工具栏,可以将xml字符串转换成map,或者将Map集合转换为xml字符串
将XML转换为Map,主要是为了方便数据处理和操作。这个过程通常涉及到XML解析和数据映射。 在描述中提到的“递归 XML 转 MAP”,是指XML文档可能存在嵌套结构,递归方法是处理这种结构的有效手段。递归意味着函数...
在Java开发中,数据结构的转换是常见的任务之一,例如将Map对象转换为XML格式的字符串,或者将...使用时,只需简单地调用提供的方法,就能轻松实现Map与XML之间的转换,简化了开发流程,提高了代码的可读性和可维护性。
- json-lib库是进行JSON与XML转换常用的库,依赖的jar包包括`json-lib-2.3-jdk15.jar`等。 - 其他依赖如`commons-beanutils`、`commons-collections`、`commons-lang`、`commons-logging`和`xom`等,都是为了支持...
2. **Map到XML转换**: - `doc2String()`方法(未在代码中显示)应该是将`Document`对象转换为字符串的方法,通常会使用`OutputFormat`和`XMLWriter`来格式化输出的XML字符串。 3. **XML到List转换**: - `...
3. Map到XML转换: - `maptoXml` 方法:这个方法接收一个Map对象,创建一个XML文档,然后遍历Map的键值对,为每个键创建一个`<key>`元素,并设置属性`label`为键的值,元素的文本为对应的值。最后,使用`doc2String...
在将查询结果转换为Map时,我们可能会遇到需要将Map的Key由下划线形式转换为驼峰形式的需求。 要实现这个功能,我们可以创建一个工具类,专门处理这种转换。以下是一个简单的示例: ```java import java.util.Map;...
在进行XML转换时,需要注意一些潜在问题,比如循环引用(对象之间相互引用)可能导致无限递归,以及安全性问题,因为XStream默认允许反序列化任何类,这可能会导致安全漏洞。因此,必须谨慎配置XStream,避免这些...