帮助小伙伴写的组装xml字符串类
- 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.Map.Entry;
- import org.dom4j.Document;
- import org.dom4j.DocumentHelper;
- import org.dom4j.Element;
- import org.dom4j.io.OutputFormat;
- import org.dom4j.io.XMLWriter;
- public class XMLUtilTest {
- /**
- * @param args
- * @throws Exception
- */
- public static void main(String[] args) throws Exception {
- XMLUtilTest a = new XMLUtilTest();
- Map map = new HashMap();
- String a1 = a.mapToXml_ygyy(map, "msg");
- //给msg节点 添加一个新的 节点 head
- map = new HashMap();
- map.put("VER", "1.0");
- map.put("YLJGDM", "1001");
- String a2 = a.mapToXml_ygyy(map, "head");
- a1 = a.addNode(a1, a2) ;
- // 获取 体征信息
- map = new HashMap();
- map.put("SG", "170");
- map.put("TZ", "60");
- String tzxx = a.mapToXml_ygyy(map, "TZXX") ; //体征
- List<Map> list = new ArrayList<Map>();
- for (int i = 0; i < 3; i++) {
- map = new HashMap();
- map.put("ZDXH", "1");
- map.put("JZZDBM", "152w");
- map.put("JZZDSM", "上呼吸道感染");
- list.add(map);
- }
- String zdxx = a.ListToXml_ygyy(list, "zd"); //诊断
- map = new HashMap();
- map.put("zs", "患者向医师描述的对自身本次疾病相关的感受的主要记录最大长度500字节");
- map.put("ZZMS", "生病了");
- String body = a.mapToXml_ygyy(map, "body");
- map = new HashMap();
- map.put("YZID", "11");
- map.put("YYXMMC", "氯化钠");
- String YP = a.mapToXml_ygyy(map, "YP");
- String FYP = a.mapToXml_ygyy(map, "FYP");
- String PRESCRIPTION = a.mapToXml_ygyy(new HashMap(), "PRESCRIPTION");
- PRESCRIPTION = a.addNode(PRESCRIPTION, YP);
- PRESCRIPTION = a.addNode(PRESCRIPTION, FYP);
- map = new HashMap();
- map.put("YYKSMC", "内科");
- body = a.mapToXml_ygyy(map, "body");
- body = a.addNode1(body, PRESCRIPTION);
- a1 = a.addNode1(a1, body); //添加节点body到 msg节点是时候用 addNode1方法
- System.out.println(a1);
- }
- /**
- * 组装xml 字符串
- * @param map 数据对象 map
- * @param jycode 交易码
- * @throws IOException
- */
- public String mapToXml(Map map,String jycode) throws Exception{
- StringBuffer sb = new StringBuffer();
- String userid = "",password = "",trans_no=jycode;
- sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
- sb.append("<body><head><userid>"+userid+"</userid><password>"+password+"</password><trans_no>"+trans_no+"</trans_no></head>");
- sb.append("<resquest><"+jycode+">");
- Iterator<Entry<String, String>> it = map.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry<String, String> entry = it.next();
- String key = entry.getKey().toUpperCase();
- String value = entry.getValue();
- sb.append("<"+key+">");
- sb.append(value);
- sb.append("</"+key+">");
- }
- sb.append("</"+jycode+"></resquest></body>");
- return sb.toString();
- }
- /**
- * 解析接口返回字符串 返回map对象
- * @param xml 中医馆接口 返回的xml 字符串
- * @return
- * @throws Exception
- */
- public Map xmlTomap(String xml) throws Exception{
- Map map = new HashMap();
- Document document = DocumentHelper.parseText(xml);
- Element root = document.getRootElement(); // 根节点body
- Element response=root.element("response");
- Element ret_code=response.element("ret_code");
- Element ret_info=response.element("ret_info");
- String code = ret_code.getText().trim();
- String codeName = ret_code.getName();
- String content = ret_info.getText().trim();
- String contentName = ret_info.getName();
- map.put(codeName, code);
- map.put(contentName, content);
- return map;
- }
- /**
- * 传入map 对象 返回 xml 节点
- * @param map
- * @param jycode
- * @return
- * @throws Exception
- */
- public String mapToXml_ygyy(Map map,String codename) throws Exception{
- //map 为null 的时候返回空节点
- codename= codename.toUpperCase();
- StringBuffer sb = new StringBuffer();
- sb.append("<"+codename+">");
- Iterator<Entry<String, String>> it = map.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry<String, String> entry = it.next();
- String key = entry.getKey().toUpperCase();
- String value = entry.getValue();
- sb.append("<"+key+">");
- sb.append(value);
- sb.append("</"+key+">");
- }
- sb.append("</"+codename+">");
- return sb.toString();
- }
- /**
- * 传入list 对象 返回 xml 节点 (会返回多个同级节点)
- * @param list list对象
- * @param codename 节点名称
- * @return
- * @throws Exception
- */
- public String ListToXml_ygyy(List<Map> list, String codename) throws Exception{
- codename = codename.toUpperCase();
- if(list.size()==0){
- return "";
- }
- StringBuffer sb = new StringBuffer();
- for (Map map : list) {
- sb.append("<"+codename+">");
- Iterator<Entry<String, String>> it = map.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry<String, String> entry = it.next();
- String key = entry.getKey().toUpperCase();
- String value = entry.getValue();
- sb.append("<"+key+">");
- sb.append(value);
- sb.append("</"+key+">");
- }
- sb.append("</"+codename+">");
- }
- return sb.toString();
- }
- /**
- * 添加子节点到 原来的节点里面
- * @param nowNode 目前的节点
- * @param addNode 要添加的节点
- * @throws Exception
- */
- public String addNode(String nowNode,String addNode) throws Exception{
- if("".equals(addNode) || "".equals(nowNode)){
- return nowNode;
- }
- addNode = "<root>"+addNode+"</root>";
- Document nowNode_doc = DocumentHelper.parseText(nowNode);
- Document addNode_doc = DocumentHelper.parseText(addNode); //要添加的xml的文档对象
- Element a1 = nowNode_doc.getRootElement();
- Element a2 = addNode_doc.getRootElement();//要添加的xml的文档对象
- List<Element> listElement=a2.elements();//所有一级子节点的list
- for(Element e:listElement){//遍历所有一级子节点
- Element cloned = (Element) e.clone ();
- a1.add(cloned);
- }
- StringWriter sw = new StringWriter();
- XMLWriter writer = null;
- OutputFormat format = OutputFormat.createPrettyPrint();
- format.setEncoding("UTF-8"); // 设置XML文档的编码类型
- format.setIndent(true); // 设置是否缩进
- format.setIndent(" "); // 以空格方式实现缩进
- format.setNewlines(true); // 设置是否换行
- try {
- writer = new XMLWriter(format);
- writer.setWriter(sw);
- writer.write(nowNode_doc);
- writer.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return sw.toString();
- }
- public String addNode1(String nowNode,String addNode) throws Exception{
- if("".equals(addNode) || "".equals(nowNode)){
- return nowNode;
- }
- Document nowNode_doc = DocumentHelper.parseText(nowNode);
- Document addNode_doc = DocumentHelper.parseText(addNode); //要添加的xml的文档对象
- Element a1 = nowNode_doc.getRootElement();
- Element a2 = addNode_doc.getRootElement();//要添加的xml的文档对象
- a1.add(a2);
- StringWriter sw = new StringWriter();
- XMLWriter writer = null;
- OutputFormat format = OutputFormat.createPrettyPrint();
- format.setEncoding("UTF-8"); // 设置XML文档的编码类型
- format.setIndent(true); // 设置是否缩进
- format.setIndent(" "); // 以空格方式实现缩进
- format.setNewlines(true); // 设置是否换行
- try {
- writer = new XMLWriter(format);
- writer.setWriter(sw);
- writer.write(nowNode_doc);
- writer.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return sw.toString();
- }
- }
帮助小伙伴写的组装xml字符串类的更多相关文章
- 任务备忘(已经完成):用python写一个格式化xml字符串的程序
功能: 1.将xml中多余的空格,换行符去掉,让xml字符串变成一行. 2.将xml中添加缩进,使用print能正确打印添加缩进后的字符串. 思路: 采用正则表达式来判断xml中字符串的类型: 1.文 ...
- XML Helper XML操作类
写的一个XML操作类,包括读取/插入/修改/删除. using System;using System.Data;using System.Configuration;using System.Web ...
- C#:XML操作类
写的一个XML操作类,包括读取/插入/修改/删除. using System; using System.Data; using System.Configuration; using System. ...
- C#操作xml完整类文件
C#操作xml完整类文件 xml_oper.cs using ...System; using System.Data; using System.Web; using System.Xml; /** ...
- .NET解析xml字符串,通过反射给实体类对象赋值,获取实体类数据列表
/// <summary> /// 解析xml字符串 转换为实体类列表数据 /// </summary> /// <param name="xmlStr&quo ...
- 为什么不用C++写游戏(聪明的程序员不用C++折磨自己)(这些工作,QT都替开发者解决了,C++没有根类导致太多的问题,也没有字符串类)
当今世界上绝大多数游戏都是C++写的,为什么要说不呢? 要做什么?写游戏. 写游戏首先要考虑些什么?做什么样的游戏,图形.音效.游戏逻辑如何实现. 用C++要先考虑什么?定义跨平台数据类型抽象,实现常 ...
- dom4j组装xml 以及解析xml
dom4j组装xml 以及解析xml: 1.下载dom4j的jar包,地址:https://dom4j.github.io/ 2.java代码: package test; import java.i ...
- Core Java 总结(字符和字符串类问题)
所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 字符,字符串类问题 正则表达式问题 J ...
- 将Xml字符串转换成(DataTable || DataSet || XML)对象
今天用到一个功能:就是把从数据库读出来的内容转换成XML字符串流格式,并输出给一个功能函数.在写的过程,为方便以后的使用,我对这一功能进行分装.该类的具体格式如下:XmlConvert类命名空间:Ni ...
随机推荐
- ExtJs工具篇(2)——Aptana Studio 3 汉化
本身用的是中文版本的,但是输入一些中文后,竟然有乱码,所以就想把它汉化.在网上搜索了一下,把步骤记录如下: 首先到这个网站去 http://aptana.com/support 选择View Docu ...
- 【目录】Spring 源码学习
[目录]Spring 源码学习 jwfy 关注 2018.01.31 19:57* 字数 896 阅读 152评论 0喜欢 9 用来记录自己学习spring源码的一些心得和体会以及相关功能的实现原理, ...
- PHP将两个数组相加
$arr_a=[1=>1,2=>2,3=>3];$arr_b=[1=>'a',4=>4];print_r($arr_a+$arr_b);返回结果:Array ( [1] ...
- python 学习总结----正则表达式
正则表达式 应用场景 - 特定规律字符串的查找,切割,替换 - 邮箱格式:URl,IP地址等的校验 - 爬虫项目中,特定内容的提取 使用原则 - 只要使用字符串等函数能解决的问题,就不要使用正则 - ...
- react实现网站换肤功能
一.目标 提供几种主题色给用户选择,然后根据用户的选择改变应用的主题色: 二.实现原理 1.准备不同主题色的样式文件: 2.将用户的选择记录在本地缓存中: 3.每次进入应用时,读取缓存 ...
- 输出1-n的全排(递归C++)
[问题描述] 输出1到n之间所有不重复的排列,即1到n的全排,要求所产生的任一数列不含有重复的数字. [代码展示] #include<iostream>using namespace st ...
- Gitlab自动触发Jenkins构建项目
Gitlab自动触发Jenkins构建项目 一.前提 Gitlab已安装配置好. Jenkins已安装Gitlab plugin. 二.配置jenkins中Job 1.勾选触发器下的gitlab触发器 ...
- UVA 11880 Ball in a Rectangle(数学+平面几何)
Input: Standard Input Output: Standard Output � There is a rectangle on the cartesian plane, with bo ...
- 学习bash——环境配置
一.环境配置文件的重要性 Bash在启动时直接读取这些配置文件,以规划好bash的操作环境. 即使注销bash,我们的设置仍然保存. 二.login shell 通过完整的登录流程取得的bash,称为 ...
- c#程序中的AssemblyInfo.cs
在asp.net中有一个配置文件AssemblyInfo.cs主要用来设定生成的有关程序集的常规信息dll文件的一些参数,下面是默认的AssemblyInfo.cs文件的内容具体介绍 //是否符合公共 ...