java dom4j封装和解析XML
2016-11-30 17:53
465 查看
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>
View Code
相关文章推荐
- java中利用dom4j对XML文档的创建、解析、查找、修改、保存等操作。
- Java中四种XML解析技术对比(Dom、Sax、Dom4j JDom)
- Java程序员从笨鸟到菜鸟之(二十七)XML之Jdom和DOM4J解析 .
- dom4j Java解析xml应用
- java通过dom4j解析xml字符串的实例
- java使用dom4j和XPath解析XML与.net 操作XML小结
- java 中dom4j 解析xml文档
- Java程序员从笨鸟到菜鸟之(二十七)XML之Jdom和DOM4J解析 .
- java 使用 dom4j 解析 XML
- Java 解析xml文档笔记(SAX,DOM,DOM4J)
- [备份]java中XML解析利器-dom4j的使用简介
- java解析xml方法:DOM解析、SAX解析、JDOM解析、DOM4J解析(转)
- java解析xml方法:DOM解析、SAX解析、JDOM解析、DOM4J解析
- JAVA DOM4J解析XML
- java解析XML方法_dom4j
- java版的webservice,完全用java的正则表达式对websercice的xml进行解析,可以很快用到web中,只需要调用其中的封装好的方法
- Java 解析XML 之 DOM4J 解析 XML 分析测试
- 用dom4j解析xml 报java.lang.NoClassDefFoundError:org/jaxen/JaxenException
- Dom4jApp.java 解析和创建XML
- JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之比较