帮助小伙伴写的组装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 ...
随机推荐
- 4299: Codechef FRBSUM
4299: Codechef FRBSUM https://www.lydsy.com/JudgeOnline/problem.php?id=4299 分析: 主席树. https://blog.se ...
- 从webview中加载assets中的html文件
private void readHtmlFormAssets(){ WebSettings webSettings = tipsWebView.getSettings(); webSettings. ...
- QC的使用学习(一)
今天学习的时间很少,就利用睡前的一点时间来学习一下刚安装好的QC. 1.后台站点管理.主要是对八大选项的了解: site project:顾名思义,就站点项目管理,管理域和项目. site user: ...
- Django2.1.3框架中(fields.E300)和(fields.E307)报错处理
使用Django框架创建了Web项目,修改了模型models.py之后,执行数据库迁移操作,出现如下报错: models.py内容如下: from django.db import models fr ...
- Python全栈 正则表达式(概念、、语法、元字符、re模块)
前言: 普通人有三件东西看不懂:医生的处方,道士的鬼符,程序员得正则表达式 什么是正则表达式? 正则表达式,又称规则表达式,英文名为Regular Expression,在代 ...
- CPU拓扑结构
本篇旨在认识一下以下三种CPU拓扑结构分别是什么: Symmetric multiprocessing (SMP) Non-uniform memory access (NUMA) Simultane ...
- poj3026(bfs+prim)最小生成树
The Borg is an immensely powerful race of enhanced humanoids from the delta quadrant of the galaxy. ...
- OpenCV中的按钮问题
在HighGUI中,没有显示提供任何形式的按钮.一般有两种方法替代: 1.用只有两个状态的滑动条来替代按钮.开关(switch)事实上就是只有两个状态的滑动条,这两个状态是on和off.然后通过回调函 ...
- PS制作圆角透明图片
方法一:利用“魔术棒橡皮工具”. 1. 点击“圆角矩形工具”,然后选中打开的背景图片,选中即可. 2.然后,按住“ctrl+enter”,所选边框变为虚线框,然后点击“ctrl+shift+i”反选( ...
- (转)Loadrunner监控Linux的17个指标
1.Average load:Average number of processes simultaneously in Ready state during the last minute. 上 ...