- 浏览: 757004 次
- 性别:
- 来自: 郑州
文章分类
- 全部博客 (396)
- JAVA (50)
- ORACLE (22)
- HIBERNATE (1)
- SPRING (26)
- STRUTS (4)
- OTHERS (0)
- MYSQL (11)
- Struts2 (16)
- JS (33)
- Tomcat (6)
- DWR (1)
- JQuery (26)
- JBoss (0)
- SQL SERVER (0)
- XML (10)
- 生活 (3)
- JSP (11)
- CSS (5)
- word (1)
- MyEclipse (7)
- JSTL (1)
- JEECMS (2)
- Freemarker (8)
- 页面特效 (1)
- EXT (2)
- Web前端 js库 (2)
- JSON http://www.json.org (3)
- 代码收集 (1)
- 电脑常识 (6)
- MD5加密 (0)
- Axis (0)
- Grails (1)
- 浏览器 (1)
- js调试工具 (1)
- WEB前端 (5)
- JDBC (2)
- PowerDesigner (1)
- OperaMasks (1)
- CMS (1)
- Java开源大全 (2)
- 分页 (28)
- Eclipse插件 (1)
- Proxool (1)
- Jad (1)
- Java反编译 (2)
- 报表 (6)
- JSON (14)
- FCKeditor (9)
- SVN (1)
- ACCESS (1)
- 正则表达式 (3)
- 数据库 (1)
- Flex (3)
- pinyin4j (2)
- IBATIS (3)
- probe (1)
- JSP & Servlet (1)
- 飞信 (0)
- AjaxSwing (0)
- AjaxSwing (0)
- Grid相关 (1)
- HTML (5)
- Guice (4)
- Warp framework (1)
- warp-persist (1)
- 服务器推送 (3)
- eclipse (1)
- JForum (5)
- 工具 (1)
- Python (1)
- Ruby (1)
- SVG (3)
- Joda-Time日期时间工具 (1)
- JDK (3)
- Pushlet (2)
- JSP & Servlet & FTP (1)
- FTP (6)
- 时间与效率 (4)
- 二维码 (1)
- 条码/二维码 (1)
最新评论
-
ctrlc:
你这是从web服务器上传到FTP服务器上的吧,能从用户电脑上上 ...
jsp 往 FTP 上传文件问题 -
annybz:
说的好抽象 为什么代码都有两遍。这个感觉没有第一篇 和第二篇 ...
Spring源代码解析(三):Spring JDBC -
annybz:
...
Spring源代码解析(一):IOC容器 -
jie_20:
你确定你有这样配置做过测试? 请不要转载一些自己没有测试的文档 ...
Spring2.0集成iReport报表技术概述 -
asd51731:
大哥,limit传-1时出错啊,怎么修改啊?
mysql limit 使用方法
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
public class XmlUtil {
/**
* 取得xml文件的根节点名称,即消息名称。
* @param xmlStr xml内容
* @return String 返回名称
*/
public static String getRootName(String xmlStr) throws Exception {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new StringReader(xmlStr));
Element root = doc.getRootElement();
return root.getName();
}
/**
* 把xml文件转换为map形式,其中key为有值的节点名称,并以其所有的祖先节点为前缀,用
* "."相连接。如:SubscribeServiceReq.Send_Address.Address_Info.DeviceType
* @param xmlStr xml内容
* @return Map 转换为map返回
*/
public static Map<String , String> xml2Map(String xmlStr) throws JDOMException, IOException {
Map<String , String> rtnMap = new HashMap<String , String>();
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new StringReader(xmlStr));
// 得到根节点
Element root = doc.getRootElement();
String rootName = root.getName();
rtnMap.put("root.name", rootName);
// 调用递归函数,得到所有最底层元素的名称和值,加入map中
convert(root, rtnMap, rootName);
return rtnMap;
}
/**
* 递归函数,找出最下层的节点并加入到map中,由xml2Map方法调用。
* @param e xml节点,包括根节点
* @param map 目标map
* @param lastname 从根节点到上一级节点名称连接的字串
*/
public static void convert(Element e, Map<String , String> map, String lastname) {
if (e.getAttributes().size() > 0) {
Iterator it_attr = e.getAttributes().iterator();
while (it_attr.hasNext()) {
Attribute attribute = (Attribute)it_attr.next();
String attrname = attribute.getName();
String attrvalue = e.getAttributeValue(attrname);
map.put(lastname + "." + attrname, attrvalue);
}
}
List children = e.getChildren();
Iterator it = children.iterator();
while (it.hasNext()) {
Element child = (Element) it.next();
String name = lastname + "." + child.getName();
// 如果有子节点,则递归调用
if (child.getChildren().size() > 0) {
convert(child, map, name);
} else {
// 如果没有子节点,则把值加入map
map.put(name, child.getText());
// 如果该节点有属性,则把所有的属性值也加入map
if (child.getAttributes().size() > 0) {
Iterator attr = child.getAttributes().iterator();
while (attr.hasNext()) {
Attribute attribute = (Attribute)attr.next();
String attrname = attribute.getName();
String attrvalue = child.getAttributeValue(attrname);
map.put(name + "." + attrname, attrvalue);
}
}
}
}
}
/**
* 把xml文件转换为list形式,其中每个元素是一个map,map中的key为有值的节点名称,并以其所有的祖先节点为前缀,用
* "."相连接。如:SubscribeServiceReq.Send_Address.Address_Info.DeviceType
* @param xmlStr xml内容
* @return Map 转换为map返回
*/
public static List<Map<String,String>> xml2List(String xmlStr) throws JDOMException, IOException {
List<Map<String,String>> rtnList = new ArrayList<Map<String,String>>();
Map<String , String> rtnMap = new HashMap<String , String>();
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new StringReader(xmlStr));
// 得到根节点
Element root = doc.getRootElement();
String rootName = root.getName();
rtnMap.put("root.name", rootName);
// 调用递归函数,得到所有最底层元素的名称和值,加入map中
convert2List(root, rtnMap, rootName, rtnList);
if(rtnList.size()==0)
rtnList.add(rtnMap);
return rtnList;
}
/**
* 递归函数,找出最下层的节点并加入到map中,如果有相同的节点,则加入list中,
* 由xml2List方法调用。
* @param e xml节点,包括根节点
* @param map 目标map
* @param lastname 从根节点到上一级节点名称连接的字串
* @param list 相同节点生成map放入list中
*/
public static void convert2List(Element e, Map<String , String> map, String lastname, List<Map<String,String>> list) {
if (e.getAttributes().size() > 0) {
Iterator it_attr = e.getAttributes().iterator();
while (it_attr.hasNext()) {
Attribute attribute = (Attribute)it_attr.next();
String attrname = attribute.getName();
String attrvalue = e.getAttributeValue(attrname);
map.put(lastname + "." + attrname, attrvalue);
}
}
List children = e.getChildren();
Iterator it = children.iterator();
while (it.hasNext()) {
Element child = (Element)it.next();
String name = lastname + "." + child.getName();
// 如果有子节点,则递归调用
if (child.getChildren().size() > 0) {
convert(child, map, name);
} else {
// 如果没有子节点,则把值加入map
map.put(name, child.getText());
// 如果该节点有属性,则把所有的属性值也加入map
if (child.getAttributes().size() > 0) {
Iterator attr = child.getAttributes().iterator();
while (attr.hasNext()) {
Attribute attribute = (Attribute)attr.next();
String attrname = attribute.getName();
String attrvalue = child.getAttributeValue(attrname);
map.put(name + "." + attrname, attrvalue);
}
}
}
//如果有相同节点,则加入list中,不考虑子节点中又有相同节点的情况
if(e.getChildren(child.getName()).size()>1){
Map<String,String> aMap = new HashMap<String,String>();
aMap.putAll(map);
list.add(aMap);
map= new HashMap<String,String>();
map.put("root.name", aMap.get("root.name"));
}
}
}
/**
* 打印map 的所有key和value
* @param map
*/
public static void printMap(Map<String , String> map) {
Iterator<String> keys = map.keySet().iterator();
while (keys.hasNext()) {
String key = keys.next();
System.out.println(key + ":" + map.get(key));
}
}
/**
* 格式化xml
* @param xmlStr
* @param encode
* @return String
* @date Apr 30, 2008
*/
@SuppressWarnings("deprecation")
public static String formatXml(String xmlStr, String encode ) {
SAXBuilder sb = new SAXBuilder();
Reader reader = new StringReader(xmlStr);
Document doc = null;
try {
doc = sb.build(reader);
}
catch (Exception e) {
//do nosth
}
XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
outputter.setEncoding(encode);
String result = "" ;
if(null != doc){
result = outputter.outputString(doc);
}
return result;
}
}
发表评论
-
使用xom实现xml文件数据的查找,删除,修改(转载)
2011-08-12 09:35 1289说明: 1,程序需要安装第三方jar包,即xom的jar包 ... -
AJAX向Response留中输出Xml的办法
2011-02-11 09:28 1451Java类中: public static void out ... -
用XPath 表达式从 XML 文档中提取信息
2011-02-10 14:52 1424package test; import java.io ... -
使用JavaScript将字符串数据转换为XML
2010-02-02 18:06 1509使用JavaScript将字符串数据转换为XML 在j ... -
生成xml字符串或xml文件
2010-02-02 18:02 2395import java.io.FileWriter;im ... -
使用JavaScript解析xml文件或xml格式字符串
2009-08-27 10:59 4779javascript中,不论是解析xml文件,还是xml格 ... -
javascript解析xml文件。兼容IE、firefox、Chrome
2009-08-26 17:23 4286.html<div id="bookList& ... -
浅谈Java开源XML工具包dom4j
2009-08-26 16:00 1366dom4j为一个XML文档在内存中创建了一个树对象模型。 它提 ... -
详解Java解析XML的四种方法
2009-08-26 14:55 2340XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言 ...
相关推荐
xml与map转换 这个应用的情况并不多见,一般都在两个系统间沟通的时候会有xml和json的相互转换。因为map和json是天生可相互转换的,所以这里只有xml能和map进行转换,那json就不是问题了。
总结来说,`EasyXmlUtil`是一个实用的Java工具类,它封装了XML与Map之间的相互转换功能,使得开发者能方便快捷地处理这两种数据格式。通过理解和使用此类,可以提高开发效率,简化数据处理的复杂性。在项目中,只需...
NULL 博文链接:https://bugyun.iteye.com/blog/2278997
它支持基本数据类型、自定义类、集合、Map以及嵌套对象的转换,并且可以通过自定义转换器来处理复杂的数据结构。 3. **kxml2-2.3.0.jar**: KXML2是一个轻量级的XML解析器,适用于Android和Java平台。XStream使用...
本示例涉及的核心知识点是将Java中的List对象与XML文档进行相互转换。这里,我们使用的库是dom4j-1.6.1.jar,这是一个强大的Java XML处理库。 首先,让我们详细了解一下List和XML。List是Java集合框架的一部分,它...
Java在软件开发中经常涉及到数据格式的转换,如XML、List、Map以及JSON之间的相互转换。这些转换在处理数据交换、API接口或者序列化时尤为关键。以下将详细讲解如何在Java中进行这些转换。 首先,JSON(JavaScript ...
Java在软件开发中经常涉及到数据格式的转换,如XML、List、Map以及JSON之间的相互转换。这些转换在处理数据交换、API调用或是序列化时非常常见。以下是一些关于如何在Java中进行这些转换的知识点: 1. JSON转换: ...
在本示例中,我们将深入探讨如何使用Gson库将JSON数据与Map对象进行相互转换,这对于在Java应用程序中处理JSON数据非常有用。 首先,我们需要导入Gson库。如果你的项目是Maven项目,可以在pom.xml文件中添加以下...
在本文中,我们将深入探讨Jibx的使用方法,了解其如何实现Java对象与XML之间的转换,并通过一个简单的示例来演示这一过程。 首先,我们需要做准备工作。Jibx的官方提供了多个示例和教程,如`...
通过编译并打包成jar,就可以在自己的项目中直接引用,进行JSON和XML的相互转换。 总结来说,JSON和XML各有优势,选择哪种格式取决于具体需求。在Java环境中,利用开源库如Jackson的JSON-java,可以轻松实现这两种...
本篇将详细介绍XStream如何处理XML与Java对象的相互转换,以及如何处理List、Map等集合类型的数据。 首先,XStream是一个强大的库,它由Pete Gyford开发,用于将Java对象序列化为XML,同时也能将XML反序列化为Java...
3. **自动处理集合和映射**:它可以自动处理Java集合框架,如List、Set和Map,将其转换为XML的数组或元素列表。 4. **类型安全**:通过类型安全的转换,可以确保在反序列化时,对象类型与原始对象匹配。 5. **自定义...
通过XMLUtil和StandaloneWriter,我们可以高效地处理Map与XML以及XML与JSON之间的相互转化,这对于数据交换、接口设计、数据存储等方面都有重要的应用价值。理解和掌握这些工具的使用,能够提升开发效率,减少数据...
MapStruct通过自动生成映射代码,避免手动编写这些转换方法,提高了开发效率并减少了错误。 5. **RESTful API**: REST(Representational State Transfer)是一种软件架构风格,常用于构建Web服务。RESTful API设计...
在标题中提到的"使用fastjson实现对象和json串之间的相互转换的jar包",就是指通过引入Fastjson的jar依赖,开发者可以在项目中直接调用其API来实现这两个功能。 首先,让我们看看如何将Java对象转换为JSON字符串。...
Java 中,Object 和 Map 是 two kinds of data types 经常需要相互转换的数据类型。以下将介绍 Java 实现 Object 和 Map 之间的转换的 3 种方式。 方式一:使用 Commons BeanUtils 利用 Commons BeanUtils 库可以...
JAXB允许Java对象和XML文档之间进行相互转换,而Jackson则是一个流行的JSON处理库,支持高效的序列化和反序列化。 在提供的文件名“Xsd2Map-master”中,“master”通常是Git仓库的主分支,表明这可能是一个开源...
这个库允许开发者将XML文档中的节点与JavaBean对象相互转换,同时提供了多种查询方法,使得处理XML变得更加方便。 首先,让我们深入了解一下Dm4J的核心功能: 1. **XML节点与JavaBean的映射**:Dm4J通过解析XML...
在项目开发中,业务分层会涉及不同类型的Bean之间需要相互转换,如PO与DTO之间,PO与VO之间等。手动编码setter/getter各个对应属性,会显得臃肿繁琐。通过Mapstruct框架可简单方便地完成这一工作。 如何引入Map...
本文将详细探讨如何实现SVG代码与CSS代码的相互转换,并介绍一种名为"svg2css"的工具来帮助完成这一过程。 SVG是一种基于XML的矢量图像格式,它可以无限缩放而不失真,非常适合用于图标、徽标和其他图形元素。CSS3...