利用JDOM实现XML与String之间的相互转换:

package com.util.xml;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.StringReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set; import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter; /**
* 通过JDOM解析XML文件 将字符串格式的XML文件转换为XML的document
*
*/ // 将String转换成XML
public class XMLUtils { public static Document str2XML(String string) throws Exception { SAXBuilder buider = new SAXBuilder(); Document document = buider.build(new StringReader(string)); return document; } //将XML转换成String输出
public static String xml2Str(String file) throws Exception { SAXBuilder builder = new SAXBuilder();
Document document = builder.build(new FileInputStream(new File(file))); Format format = Format.getCompactFormat();
format.setEncoding("UTF-8");// 设置xml文件的字符为UTF-8,解决中文问题
XMLOutputter xmlout = new XMLOutputter(); ByteArrayOutputStream bo = new ByteArrayOutputStream();
xmlout.output(document, bo);
return bo.toString().trim(); } // 将XML以键值对的形式输出,对于有两层以上的XML文件
public static Map<String, String> paraseXML(String file) throws Exception { Map<String, String> map = new HashMap<String, String>(); SAXBuilder builder = new SAXBuilder();
Document document = builder.build(new File(file)); Element root = document.getRootElement(); List<Element> list = root.getChildren();
for (Iterator<Element> iterator = list.iterator(); iterator.hasNext();) { Element firstChild = iterator.next();
List<Element> secondElements = firstChild.getChildren(); for (Iterator<Element> iterator2 = secondElements.iterator(); iterator2
.hasNext();) { Element secondElement = iterator2.next();
map.put(secondElement.getName(), secondElement.getText());
} } return map;
} public static void main(String[] args) throws Exception { String str = "<students><Student><name>zhangsan</name><age>18</age><name>lisi</name><age>28</age></Student></students>";
Document document = str2XML(str);
Element root = document.getRootElement();
System.out.println(root.getName());
System.out.println(root.getChildText("name")); XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat()
.setIndent(" "));
FileOutputStream fos = new FileOutputStream(new File(
"date\\string2xml.xml"));
outputter.output(document, fos);
fos.close(); String xmlContent = xml2Str("date\\string2xml.xml");
System.out.println("XML的内容为: "+ "\n" + xmlContent); Map<String, String> xmlMap = new HashMap<String, String>();
xmlMap = paraseXML("date\\string2xml.xml");
Set<String> keysSet = xmlMap.keySet();
for(String key: keysSet){ String value = xmlMap.get(key);
System.out.println(key + " = " + value);
} } }

通过JDOM实现XML与String的相互转换的更多相关文章

  1. XML 之 与Json或String的相互转换

    1.XML与String的相互转换 [1] XML 转为 String //载入Xml文件 XmlDocument xdoc = new XmlDocument(); xdoc.Load(" ...

  2. Javaweb学习笔记——使用Jdom解析xml

    一.前言 Jdom是什么? Jdom是一个开源项目,基于树形结构,利用纯java的技术对XML文档实现解析,生成,序列化以及多种操作.它是直接为java编程服务,利用java语言的特性(方法重载,集合 ...

  3. 摘抄的 JAVA JDOM 操作XML文件

    JDOM修炼篇 用过XERCES的程序员都会感到,有时候用一句话就可以说清楚的事,当用XERCES的API来实现时,要三四行程序.   回页首 获得并安装JDOM 在 http://www.jdom. ...

  4. java socket报文通信(三)java对象和xml格式文件的相互转换

    前两节讲了socket服务端,客户端的建立以及报文的封装.今天就来讲一下java对象和xml格式文件的相互转换. 上一节中我们列举了一个报文格式,其实我们可以理解为其实就是一个字符串.但是我们不可能每 ...

  5. C#对象与XMl文件之间的相互转换(转)

    本文是对C#中对象与XMl文件之间的相互转换进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 C#提供三种序列化方式,分别为:1.是使用BinaryFormatter进行串行化: 2.使 ...

  6. 使用jdom进行xml解析,网络抓包

    最近再做一个项目,使用到了jdom进行xml解析,为了方便记忆,现在保存在这里 package bboss; import java.io.FileInputStream; import java.i ...

  7. jdom解析xml

    这次把代码整理了一下,打包发上来了,程序中需要用到的jar包也一起打在里面了,有兴趣的朋友可以解压后直接导入的eclipse里运行! xml是一种广为使用的可扩展标记语言,java中解析xml的方式有 ...

  8. XML与DataSet的相互转换

    转:https://www.cnblogs.com/kunEssay/p/6168824.html XML与DataSet的相互转换的类 一.XML与DataSet的相互转换的类 using Syst ...

  9. JDOM 操作XML

    http://www.cnblogs.com/hoojo/archive/2011/08/11/2134638.html 可扩展标记语言——eXtensible Markup Language 用户可 ...

随机推荐

  1. nodejs中async使用

    waterfall , parallel ,  series  ,  eachSeries //var async = require('async'); /*** *① * 串行有关联 执行每个函数 ...

  2. 转载 【.NET基础】--委托、事件、线程(2) https://www.cnblogs.com/chengzish/p/4569912.html

    [.NET基础]--委托.事件.线程(2)   本文介绍event的使用以及原理,本文接上一篇文章的Demo继续[下载上一篇Demo] 上一篇我们在类(dg_SayHi.cs)里面定义代理了4个Del ...

  3. 1605--luogu(深搜dfs)

    据说 这是一道很水的题 emmm 好吧 是我过分水了 ------------------------------------------------------------------------ ...

  4. MySQL 基础一 安装

    1.下载安装包 2.安装MySQL 3.安装操作工具SQLyog 一 下载安装包 地址:百度软件中心MySQL安装包 下载安装操作工具安装包:SQLyog 安装教程地址:http://blog.csd ...

  5. EasyUI tab

    1.新增tab2.关闭tab3.右键菜单(关闭.关闭所有.关闭其它.关闭右侧.关闭左侧) //双击关闭tab $(document).on("dblclick", ".t ...

  6. C++ 文件和流

    到目前为止,我们已经使用了 iostream 标准库,它提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流. 本教程介绍如何从文件读取流和向文件写入流.这就需要用到 C++ ...

  7. (转)tcp/ip协议的简单理解 -- ip报文和tcp报文的格式

    1.概念: TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程.入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地.出栈的过程,数据接收方每层不断地拆除首部 ...

  8. ionic 访问odoo11之具体业务类api接口

    在前面测试通过odoo登录的功能,这次的问题重点是如何访问后台具体的业务类的接口呢?这次就以我们在odoo中安装的lunch模块为例,目标是获取lunch.alert的数据,如下图 具体过程接上次文章 ...

  9. 生成32位UUID及生成指定个数的UUID

    参考地址:https://blog.csdn.net/xinghuo0007/article/details/72868799 UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯 ...

  10. CF1146 Forethought Future Cup Elimination Round Tutorial

    CF1146 Forethought Future Cup Elimination Round Tutorial 叮,守夜冠军卡 https://codeforces.com/blog/entry/6 ...