java dom4j封装和解析XML
package org.scbit.lsbi.scp.utils; import java.util.ArrayList;
import java.util.List; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.scbit.lsbi.scp.utils.enums.TemplateDeviceEnum;
import org.scbit.lsbi.scp.vo.TemplateDeviceFormVo;
import org.scbit.lsbi.scp.vo.TemplateDeviceVo; public class CurrentXMLUtil { // 封装数据到XML
public static String createXML(TemplateDeviceFormVo templateDeviceFormVo) {
List<TemplateDeviceVo> templateDeviceVo = templateDeviceFormVo.getTemplateDeviceVos();
Document doc = DocumentHelper.createDocument();
doc.setXMLEncoding("UTF-8");
Element root = doc.addElement("custom");
for (int i = 0; i < templateDeviceVo.size(); i++) {
Element iterm = root.addElement("iterm");
iterm.addAttribute("filed", templateDeviceVo.get(i).getParamId());
iterm.addElement("name").setText(templateDeviceVo.get(i).getFiledName());
iterm.addElement("code")
.setText(ChineseInitials.getPinYinHeadChar(templateDeviceVo.get(i).getFiledName(), 1));
String typ = TemplateDeviceEnum.getCnName(templateDeviceVo.get(i).getType());
Element type = iterm.addElement("type").addAttribute("value", typ);
if ("radio".equals(templateDeviceVo.get(i).getType())
|| "select".equals(templateDeviceVo.get(i).getType())) {
if (templateDeviceVo.get(i).getOptions() != null)
for (int j = 0; j < templateDeviceVo.get(i).getOptions().size(); j++) {
type.addElement("option").setText(templateDeviceVo.get(i).getOptions().get(j));
}
if (StringUtil.hasText(templateDeviceVo.get(i).getSelect())) {
iterm.addElement("normalValue").setText(templateDeviceVo.get(i).getOptions()
.get(Integer.parseInt(templateDeviceVo.get(i).getSelect().length() + "") - 2));
}
}
if ("number".equals(templateDeviceVo.get(i).getType())
&& StringUtil.hasText(templateDeviceVo.get(i).getLocalUnit())
&& !StringUtil.hasText(templateDeviceVo.get(i).getMaxNum())) {
iterm.addElement("meunit").setText(templateDeviceVo.get(i).getLocalUnit());
iterm.addElement("number").setText(templateDeviceVo.get(i).getSignVal());
iterm.addElement("sign").setText(templateDeviceVo.get(i).getSign());// templateDeviceVo.get(i).getSign();
}
if ("number_value".equals(templateDeviceVo.get(i).getType())
&& StringUtil.hasText(templateDeviceVo.get(i).getMaxNum())
&& StringUtil.hasText(templateDeviceVo.get(i).getRangeUnit())) {
iterm.addElement("meunit").setText(templateDeviceVo.get(i).getRangeUnit());
iterm.addElement("min").setText(templateDeviceVo.get(i).getMinNum());
iterm.addElement("max").setText(templateDeviceVo.get(i).getMaxNum());
}
if ("yin_yang".equals(templateDeviceVo.get(i).getType())) {
if (templateDeviceVo.get(i).getOptions() != null) {
for (int j = 0; j < templateDeviceVo.get(i).getOptions().size(); j++) {
type.addElement("option").setText(templateDeviceVo.get(i).getOptions().get(j));
}
}
if (StringUtil.hasText(templateDeviceVo.get(i).getSelect())) {
iterm.addElement("normalValue").setText(templateDeviceVo.get(i).getSelect());
}
} }
return doc.asXML(); } public static TemplateDeviceFormVo parseXML(String xml) {
Document doc = null;
Element root = null;
TemplateDeviceFormVo templateDeviceFormVo = new TemplateDeviceFormVo();
try {
doc = DocumentHelper.parseText(xml);
root = doc.getRootElement();
List<Element> elements = root.elements();
List<TemplateDeviceVo> templateDeviceVos = new ArrayList<>();
for (int i = 0; i < elements.size(); i++) {
TemplateDeviceVo templateDeviceVo = new TemplateDeviceVo();
Element iterm = elements.get(i);
String name = iterm.elementText("name");
String code = iterm.elementText("code");
String type = iterm.element("type").attribute("value").getText();
String paramId = iterm.attribute("filed").getText();
templateDeviceVo.setParamId(paramId);
templateDeviceVo.setFiledName(name);
templateDeviceVo.setCode(code);
templateDeviceVo.setType(type);
if (iterm.element("type").hasContent()) {
List<Element> options = iterm.element("type").elements("option");
List<String> ops = new ArrayList<>();
for (Element option : options) {
String opText = option.getText();
ops.add(opText);
}
templateDeviceVo.setOptions(ops); }
if (iterm.element("normalValue") != null) {
templateDeviceVo.setSelect(iterm.element("normalValue").getText());
}
if (iterm.element("meunit") != null && iterm.element("max") == null) {
templateDeviceVo.setLocalUnit(iterm.element("meunit").getText());
templateDeviceVo.setSignVal(iterm.element("number").getText());
templateDeviceVo.setSign(iterm.element("sign").getText());
}
if (iterm.element("meunit") != null && iterm.element("max") != null) {
templateDeviceVo.setRangeUnit(iterm.element("meunit").getText());
templateDeviceVo.setMinNum(iterm.element("min").getText());
templateDeviceVo.setMaxNum(iterm.element("max").getText());
} templateDeviceVos.add(templateDeviceVo);
}
templateDeviceFormVo.setTemplateDeviceVos(templateDeviceVos); } catch (DocumentException e) {
e.printStackTrace();
} return templateDeviceFormVo;
}
}
maven包:
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
XML示例:
<?xml version="1.0" encoding="UTF-8"?>
<custom>
<iterm filed="">
<name>白细胞数</name>
<code>bxb</code>
<type value="数字"></type>
<meunit>个</meunit>
<min>4</min>
<max>10</max>
</iterm>
<iterm filed="">
<name>白细胞数</name>
<code>bxb</code>
<type value="数字"></type>
<meunit>个</meunit>
<number>20</number>
</iterm>
<iterm filed="">
<name>细菌阴阳性</name>
<code>zc</code>
<type value="单选框">
<option >阴</option>
<option>阳</option>
</type>
<required>false</required>
<normalValue>阴</normalValue>
</iterm>
<iterm filed="">
<name>照片</name>
<code>tp</code>
<type value="图片"></type>
<required>false</required>
</iterm>
<iterm filed="">
<name>描述</name>
<code>ms</code>
<type value="文本框"></type>
<required>false</required>
</iterm>
</custom>
java dom4j封装和解析XML的更多相关文章
- 使用dom4j创建和解析xml文件
使用dom4j创建和解析xml文件 在项目开发中,我们经常会遇到xml文件的创建和解析从别人接口得到的xml文件,而我们最常使用的组件是dom4j. 下面我就以代码来讲解一下如何使用dom4j来创建x ...
- dom4j生成和解析xml文件
dom4j生成和解析xml文件 要生成和解析如下格式的xml文件: <?xml version="1.0" encoding="UTF-8"?> & ...
- DOM4J生成、解析XML实例
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Iterato ...
- java使用dom4j和XPath解析XML与.net 操作XML小结
最近研究java的dom4j包,使用 dom4j包来操作了xml 文件 包括三个文件:studentInfo.xml(待解析的xml文件), Dom4jReadExmple.java(解析的主要类), ...
- 浅谈 Java 主流开源类库解析 XML
在大型项目编码推进中,涉及到 XML 解析问题时,大多数程序员都不太会选用底层的解析方式直接编码. 主要存在编码复杂性.难扩展.难复用....,但如果你是 super 程序员或是一个人的项目,也不妨一 ...
- JAVA中使用DOM解析XML文件
XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...
- 简单用DOM4J结合XPATH解析XML
由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便,结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式 第一种形式 ...
- Flex与Java交互(Flex调用java类展示数据)解析xml展示数据
Flex与java通信最简单例子(详细说明了各种需要注意的配置):http://blog.csdn.net/u010011052/article/details/9116869 Flex与java通信 ...
- 使用dom4j创建和解析xml
之前工作中用到了,相信写java的都会碰到xml,这里写了两个方法,创建和解析xml,废话不多说,直接上代码 package xml; import java.io.File; import java ...
随机推荐
- angular
- 浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法(转载)
在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值,这时很有可能是因为你用的是ajax的异步调用async:t ...
- C#-WebForm-Request、Response、QueryString、Repeater删
知识点: Request - 获取请求对象 专门用来接传递过来的值 Request["key"](李献策lxc) 1.获取地址栏传递过来的值 get 2.获取表单传递过来的参数值 ...
- [POJ&HDU]杂题记录
POJ2152 树形dp,每次先dfs一遍求出距离再枚举所有点转移即可. #include<iostream> #include<cstdio> #include<cma ...
- Android源码——Logger日志系统
Android的Logger日志系统是基于内核中的Logger日志驱动程序实现的. 日志保存在内核空间中 缓冲区保存日志 分类方法:日志的类型 + 日志的输出量 日志类型: main ...
- fastclick 源码注解及一些基础知识点
在移动端,网页上的点击穿透问题导致了非常糟糕的用户体验.那么该如何解决这个问题呢? 问题产生的原因 移动端浏览器的点击事件存在300ms的延迟执行,这个延迟是由于移动端需要通过在这个时间段用户是否两次 ...
- ThinkPhp 3.2 CRUD操作
创建数据对象 ThinkPHP可以帮助你快速地创建数据对象,最典型的应用就是自动根据表单数据创建数据对象,这个优势在一个数据表的字段非常之多的情况下尤其明显. 很简单的例子: // 实例化User模型 ...
- 你想要了解但是却羞于发问的有关SSL的一切
Everything You Ever Wanted to Know About SSL (but Were Afraid to Ask) Or perhaps more accurately, &q ...
- php实现文件上传与下载(上)
php实现文件的上传与下载是一个挺基本的功能,一般网站多多少少都会有这样的需求在内,当然不是说所有的文件都可以被上传,那这网络就太没有安全性可言了.因为接触php时间不长,今天写练练手,随笔也就是公开 ...
- mysql表单输入数据出现中文乱码解决方法
MySQL会出现中文乱码的原因在于1.server本身设定问题,一般来说是latin1 2.建库建表时没有制定编码格式. 解决方法: 1.建库的时候 CREATE DATABASE test CHAR ...