您的位置:首页 > 其它

使用dom4j生成xml字符串,以及解析xml字符串

2015-04-16 12:43 537 查看
基于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());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: