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 ...
随机推荐
- weui 多网页切换效果分析
weui的文档写的不怎么详尽,简单的来讲WeUI 为微信 Web 服务量身设计的h5框架. WeUI是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户 ...
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问
delphi ado 跨数据库访问 语句如下 ' and db = '帐套1' 报错内容是:SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATE ...
- 查询SqlServer中每张表的记录数
select schema_name(t.schema_id) as [ Schema ], t. name as TableName,i. rows as [RowCount] from sys.t ...
- python_java_selenium_ jenkins持续集成Firfox_chrome浏览器不显示的解决方法?
python_java_selenium_ jenkins持续集成Firfox_chrome浏览器不显示的解决方法: 原因:因为jenkins是用windows installer 安装成 windo ...
- Git怎样撤销一次分支的合并Merge
出现的问题: 某一天,所有的开发文件已经在development分支上,但是这时候,线上出了一个问题,需要及时修复,于是从master分支上,拉了一个bug分支,进行处理,master分支本应合并bu ...
- iOS代码规范
一.文档结构管理 1.建立Libraries文件夹,所有第三方库放入其中. 2.建立Utilities文件夹,自已封装的类放入其中. 3.建立Constants.h头文件,所有的常量定义于其中.Con ...
- oracle--游标--bai
--复制表 create table emp as(select * from scott.emp); select * from emp; --(1) 最简单的游标 declare --声明并初始化 ...
- [Unity3D]UI界面之瞄准镜设置说明
9空格设计 : 比如说4个角的图案固定,拉伸的时候不受影响 通过设置 左上右下来: 通过创建Image对象,将设置好的图片关联到Source Image 调整瞄准镜跟随飞机, 注意这里设置的Z轴向量是 ...
- jquery1.7.2的源码分析(二)
jquery.extend jQuery.extend = jQuery.fn.extend = function () { var options, name, src, copy, copyIsA ...
- UI
http://semantic-ui.com/introduction/getting-started.html