使用dom4j生成xml字符串,以及解析xml字符串
基于dom4j-1.6.1.jar
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter; /**
*
* @author y
*/
public class Test { /**
* @param args the command line arguments
*/
public static void main(String[] args) throws DocumentException {
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "李四");
map.put("age", 25); //System.out.println(map2xml(map)); List<Object> list = new ArrayList<Object>();
list.add("测试1");
list.add("测试2");
list.add("测试3"); //System.out.println(list2xml(list,"items")); List<Map<String,Object>> listMap = new ArrayList<Map<String,Object>>();
Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("name", "张三");
map1.put("age", 23);
listMap.add(map1);
map1 = new HashMap<String,Object>();
map1.put("name", "李四");
map1.put("age", 24);
listMap.add(map1);
map1 = new HashMap<String,Object>();
map1.put("name", "王五");
map1.put("age", 25);
listMap.add(map1); System.out.println(listMap2xml(listMap,"users","user")); } public static String listMap2xml(List<Map<String,Object>> list,String listRoot,String mapRoot){
Document doc = DocumentHelper.createDocument(); Element rootEle = doc.addElement("result");
Element noEle = rootEle.addElement("no");
Element msgEle = rootEle.addElement("msg"); if(null!=list && !list.isEmpty()){
noEle.setText("1");
msgEle.setText("成功获取相关信息"); Element listRootEle = rootEle.addElement(listRoot); for(Map<String,Object> map:list){ Element mapRootELe = listRootEle.addElement(mapRoot); Set<Map.Entry<String,Object>> set = map.entrySet();
Iterator<Map.Entry<String,Object>> iter = set.iterator();
while(iter.hasNext()){
Map.Entry<String,Object> entry = (Map.Entry<String,Object>)iter.next(); Element ele = mapRootELe.addElement(entry.getKey());
ele.setText(String.valueOf(entry.getValue()));
}
}
}else{
noEle.setText("0");
msgEle.setText("没有获取到相关信息");
} StringWriter sw = new StringWriter();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8"); try { XMLWriter xmlWriter = new XMLWriter(sw, format); xmlWriter.write(doc);
} catch (IOException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}finally{
try {
sw.close();
} catch (IOException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
} return sw.toString();
} public static String list2xml(List<Object> list,String itemRoot){
Document doc = DocumentHelper.createDocument(); Element rootEle = doc.addElement("result");
Element noEle = rootEle.addElement("no");
Element msgEle = rootEle.addElement("msg"); if(null!=list && !list.isEmpty()){
noEle.setText("1");
msgEle.setText("成功获取相关信息"); Element itemRootEle = rootEle.addElement(itemRoot); for(Object obj:list){
Element ele = itemRootEle.addElement("item");
ele.setText(String.valueOf(obj));
}
}else{
noEle.setText("0");
msgEle.setText("没有获取到相关信息");
} StringWriter sw = new StringWriter();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8"); try { XMLWriter xmlWriter = new XMLWriter(sw, format); xmlWriter.write(doc);
} catch (IOException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}finally{
try {
sw.close();
} catch (IOException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
} return sw.toString();
} public static String map2xml(Map<String, Object> map) {
Document doc = DocumentHelper.createDocument(); Element rootEle = doc.addElement("result"); Element noEle = rootEle.addElement("no");
Element msgEle = rootEle.addElement("msg"); if(null!=map && !map.isEmpty()){
noEle.setText("1");
msgEle.setText("成功获取相关信息"); Set<Map.Entry<String, Object>> set = map.entrySet();
Iterator<Map.Entry<String, Object>> iter = set.iterator();
while(iter.hasNext()){
Map.Entry<String, Object> entry = (Map.Entry<String, Object>) iter.next(); Element ele = rootEle.addElement(entry.getKey());
ele.setText(String.valueOf(entry.getValue()));
}
}else{
noEle.setText("0");
msgEle.setText("没有获取到相关信息");
} StringWriter sw = new StringWriter();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8"); try { XMLWriter xmlWriter = new XMLWriter(sw, format); xmlWriter.write(doc);
} catch (IOException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}finally{
try {
sw.close();
} catch (IOException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
} return sw.toString();
} public static void test4() {
Document doc = DocumentHelper.createDocument(); Element rootEle = doc.addElement("sudent"); Element nameEle = rootEle.addElement("name");
nameEle.setText("张三"); Element ageEle = rootEle.addElement("age");
ageEle.setText("25"); try {
StringWriter sw = new StringWriter();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter xmlWriter = new XMLWriter(sw, format); xmlWriter.write(doc); System.out.println(sw.toString());
} catch (IOException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
} } public static void test3() throws DocumentException {
String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<books>"
+ " <book>"
+ " <name>Think in Java</name>"
+ " <price>120.0</price>"
+ " <chapters>"
+ " <c>001</c>"
+ " <c>002</c>"
+ " <c>003</c>"
+ " </chapters>"
+ " </book>"
+ " <book>"
+ " <name>Think in Java2</name>"
+ " <price>220.0</price>"
+ " </book>"
+ "</books>";
Document doc = DocumentHelper.parseText(str);
Element books = doc.getRootElement();
List<Element> childEles = books.elements();
Iterator<Element> iter = childEles.iterator();
while (iter.hasNext()) {
Element book = iter.next(); Element name = book.element("name");
Element price = book.element("price"); System.out.println("name:" + name.getText() + ",price:" + price.getText()); Element chapters = book.element("chapters");
if (null != chapters) {
Iterator<Element> chaptersIter = chapters.elementIterator();
if (null != chaptersIter) {
while (chaptersIter.hasNext()) {
Element c = chaptersIter.next();
System.out.println("===>" + c.getText());
}
}
} }
} public static void test2() throws DocumentException {
String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<books>"
+ " <book>"
+ " <name>Think in Java</name>"
+ " <price>120.0</price>"
+ " </book>"
+ " <book>"
+ " <name>Think in Java2</name>"
+ " <price>220.0</price>"
+ " </book>"
+ "</books>"; Document doc = DocumentHelper.parseText(str); Element books = doc.getRootElement(); List<Element> childEles = books.elements();
Iterator<Element> iter = childEles.iterator();
while (iter.hasNext()) {
Element book = iter.next(); Element name = book.element("name");
Element price = book.element("price"); System.out.println("name:" + name.getText() + ",price:" + price.getText());
}
} public static void test1() throws DocumentException {
String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<dzswdjz>"
+ " <qr_code>"
+ " <nsrsbh>nsrsbh</nsrsbh >"
+ " <retStatus >retStatus</retStatus>"
+ " <img_name>img_name</img_name>"
+ " <img_byteString>img_byteString</img_byteString>"
+ " </qr_code>"
+ "</dzswdjz>";
Document doc = DocumentHelper.parseText(str); //获取到父节点
Element dzswdjz = doc.getRootElement(); //定位到qr_code节点
Element qr_code = dzswdjz.element("qr_code"); Element nsrsbh = qr_code.element("nsrsbh");
Element retStatus = qr_code.element("retStatus");
Element img_name = qr_code.element("img_name");
Element img_byteString = qr_code.element("img_byteString"); System.out.println("nsrsbh:" + nsrsbh.getText());
System.out.println("retStatus:" + retStatus.getText());
System.out.println("img_name:" + img_name.getText());
System.out.println("img_byteString:" + img_byteString.getText());
}
}
使用dom4j生成xml字符串,以及解析xml字符串的更多相关文章
- Java中使用DOM4J来生成xml文件和解析xml文件
一.前言 现在有不少需求,是需要我们解析xml文件中的数据,然后导入到数据库中,当然解析xml文件也有好多种方法,小编觉得还是DOM4J用的最多最广泛也最好理解的吧.小编也是最近需求里遇到了,就来整理 ...
- XML基础+Java解析XML +几种解析方式的性能比较
XML基础+Java解析XML 一:XML基础 XML是什么: 可扩展的标记语言 XML能干什么: 描述数据.存储数据.传输(交换)数据. XML与HTML区别: 目的不一样 XML 被设计用来描述数 ...
- xml语法、DTD约束xml、Schema约束xml、DOM解析xml
今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...
- python 之模块之 xml.dom.minidom解析xml
# -*- coding: cp936 -*- #python 27 #xiaodeng #python 之模块之 xml.dom.minidom解析xml #http://www.cnblogs.c ...
- Java利用dom4j生成xml文件、解析XML
package com.fq.fanqi; import java.io.File;import java.io.FileWriter;import java.io.IOException;impor ...
- 在C#中使用属性控制 XML 序列化来解析XML
今天需要解析一个XML,这个XML和一般情况用.NET的序列化出来的格式不太一样. 我就又补习了一下. 分享一下学习成果吧. 示例代码下载: http://download.csdn.net/deta ...
- PHP通过XML报文格式的POST请求方式,与第三方接口交互(发送xml,获取XML,并解析xml步骤)
开发者端:发送请求,并接收结果 <?php // 下面的demo,实现的功能如下: // 1-开发者需要判断一个用户是否存在,去请求第三方接口. // 2-与第三方接口的通信,是以xml格式传送 ...
- 创建xml文件、解析xml文件
1.创建XML文件: import codecs import xml.dom.minidom doc=xml.dom.minidom.Document() print doc root=do ...
- ElementTree 解析xml(minidom解析xml大文件时,MemoryError)
在使用minido解析xml文件时,因为文件过大,结果报错MemoryError.查询后得知是因为minidom在解析时是将所有文件放到内存里的,很占用内存,所以要考虑换一种方法来处理xml文件. ...
- python xml.dom模块解析xml
1. 什么是xml?有何特征? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 例子:del.xml <?xml version=&q ...
随机推荐
- Java学习日记-7 抽象类和接口
一.抽象类 abstract修饰:类和类中的方法 抽象方法:abstract type name(parameter-list);(abstract不能修饰static方法和构造函数) 引用:抽象类有 ...
- C#实现数据结构——线性表(上)
什么是线性表 数据结构中最常用也最简单的应该就是线性表,它是一种线性结构(废话,不是线性结构怎么会叫线性表?当然不是废话,古人公孙龙就说白马非马,现代生物学家也说鲸鱼不是鱼). 那什么是线性结构? 按 ...
- mysql binaryVInstall
下载mysql 1.下载:在http://dev.mysql.com/downloads/mysql/官网上下载mysql-5.5.28-linux2.6-i686.tar.gz. 2.解压 -lin ...
- 高频交易策略之Penny Jump
今天假设有一个笨笨的大型机构投资人(共同基金,银行,退休基金....),他想要买进一只股票,但又不想挂市价买进,所以就在市场里面挂了一张要买进的大单.这时候所有市场里面的人都会看的到limit ord ...
- 数据库 —— mySQL 的安装
[转载Link]MySQL-5.6.24免安装版配置方法,有需要的朋友可以参考下. 1. 下载MySQL Community Server 5.6.24 2. 解压MySQL压缩包 将以下载的MySQ ...
- SKTransition类
继承自 NSObject 符合 NSObject(NSObject) 框架 /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0 ...
- [每日一题] 11gOCP 1z0-052 :2013-09-2 ADDM(Automatic Database Diagnostic Monitor)...................A28
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/10951207 正确答案:BC AWR简称Automatic Workload Reposi ...
- STL之set && multiset
一.set 在了解关联容器set之前,让我们先来看看下面这个例子,并猜测该例子输出什么: // stl/set1.cpp #include <iostream> #include < ...
- 大数据笔记07:大数据之Hadoop的HDFS(特点)
1. HDFS的特点: (1)数据冗余,硬件容错 (2)流式的数据访问(写一次读多次,不能直接修改已写入的数据,只能删除之后再去写入) (3)存储大文件 2. HDFS适用性和局限性 适用性:(1)适 ...
- 在top命令下kill和renice进程
For common process management tasks, top is so great because it gives an overview of the most active ...