在此记录一个xml的工具类,该类可以读取xml文件,存入磁盘,并将xml转换为实体对象。
package com.sgcc.ahepc.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class XMLUtil { public static Document parse(String path) throws DocumentException{ SAXReader reader = new SAXReader(); return reader.read(new File(path)); } public static Document parse(InputStream in) throws DocumentException{ SAXReader reader = new SAXReader(); return reader.read(in); } public static Document parse(URL url) throws DocumentException{ SAXReader reader = new SAXReader(); return reader.read(url); } /** * X-path的查找方式 * @param document */ @SuppressWarnings("unchecked") public static List<Element> xpathFind(Document document,String nodes){ List<Element> list = document.selectNodes(nodes); return list; } public static String writeXMLToDist(Document document,String basePath,String fileName) throws IOException { File file = new File(basePath+fileName); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); //XMLWriter writer = new XMLWriter(new FileWriter(file),format); XMLWriter writer = new XMLWriter(new FileOutputStream(file), format); writer.write(document); writer.close(); return basePath+fileName; } /** * 该方法能返回单对象Bean * @param document * @param xpath 路径“/aaa/bbb” * @param obj 传入的实体对象 * @return 返回该实体对象,使用时强转 * @throws Exception */ @SuppressWarnings("unchecked") public static Object convertXMLToBean(Document document,String xpath, Object obj) throws Exception { String basePath = xpath; Class c = obj.getClass(); Field[] fields = c.getDeclaredFields(); for(int i=0;i<fields.length;i++){ String name = fields[i].getName(); String methodName = "set"+name.substring(0,1).toUpperCase()+name.substring(1); Node node = document.selectSingleNode(basePath+"/"+name.toUpperCase()); if(node == null){ continue; } Method method = c.getDeclaredMethod(methodName,String.class); method.invoke(obj, node.getText()); } return obj; } /** * 用于变量计划型 注意传入的实体类需要提供getBean的方法,返回一个新实体 * @param document * @param xpath * @param obj * @return * @throws Exception */ @SuppressWarnings("unchecked") public static Object convertXMLToBeans(Document document, String xpath, Object obj) throws Exception { List<Object> lists = new ArrayList<Object>(); List list = document.selectNodes(xpath); for (int i = 0; i < list.size(); i++) { Element elements = (Element) list.get(i); for (Iterator<Element> j = elements.elementIterator(); j.hasNext();) { Element element = j.next(); Class d = obj.getClass(); Field[] dfields = d.getDeclaredFields(); Method instance = d.getMethod("getBean"); Object newObj = instance.invoke(obj); for (int k = 0; k < dfields.length; k++) { String name = dfields[k].getName(); String methodName = "set" + name.substring(0, 1).toUpperCase() + name.substring(1); Node node = element.selectSingleNode(name.toUpperCase()); if (node == null) { continue; } Method method = d.getDeclaredMethod(methodName, String.class); method.invoke(newObj, node.getText()); } lists.add(newObj); } } return lists; } }
该类支持无属性的xml转换为实体bean,节点的名称和实体bean的名称一致,多个bean的的xml需要在实体类中提供getBean()的方法,整体采用java反射的机制进行,还比较实用。
相关推荐
自己写的一个xml映射实体对象类,附件为一个AXIS客户端代码生成文档
该工具用于自动解析xml文件,根据标准的xml文件自动生成对应的javabean
java 通过模板生成 xml,发送报文
简单在generatorConfig.xml文件中重新配置下数据库连接的URL和dao、model、mapper映射文件位置,最后改下具体的数据库表名和你的实体类名,点击gen.bat自动就能生成
mybatis实体类以及mapper映射xml文件及接口的自动生成类工具
根据MySQL数据库表生成swagger风格的实体,mapper,xml文件.
自己编写的读写xml文件,对xml文件的增加、删除、修改、查找
需要安装python2.7和MySQLdb,可以自动生成实体类和对应的xml文件,包含增删改查基本操作
在使用ADO.NET实体数据模型开发数据库应用的时候,在生成实体对象的时候,微软没有将数据库中定义的表和字段的说明文字作为XML的注释导入,通常在类和属性的XML注释中写入/// 没有元数据文档可用在进行较大项目开发...
在使用ADO.NET实体数据模型开发数据库应用的时候,在生成实体对象的时候,微软没有将数据库中定义的表和字段的说明文字作为XML的注释导入,通常在类和属性的XML注释中写入/// 没有元数据文档可用在进行较大项目开发...
C# 生成xml文件,编码为utf-8方法
xml转javaBean,javaBean转xml,xml标签大小写问题,CDATA的生成,以及对xml特殊符号的处理
2.2.1 单个实体对象的数据库操作 6 1、获取一个实体对象信息 6 2、插入一个实体对象信息 6 3、更新一个实体对象信息 6 4、保存一个实体对象信息 6 5、删除一个实体对象信息 7 6、取得实体映射表数值字段的最大值+1 7...
通过XStream实现互转,IDEA开发,需加装依赖的JAR包
作为一名 Java 后端开发,日常工作中免不了要生成数据库表对应的持久化对象 PO,操作数据库的接口 DAO,以及 CRUD 的 XML,也就是 mapper。 Mybatis Generator 是 MyBatis 官方提供的一个代码生成工具,完全可以...
实体:存储了任意符合规则的xml文档单元片断。 1、内部通用实体 定义格式 <!ENTITY 实体名 “实体内容”> 引用格式 &实体名; 2、外部通用实体 定义格式 <!ENTITY 实体名 SYSTEM “外部实体的URI”> 引用...
简单地说,TinyXML解析一个XML文档并由此生成一个可读可修改可保存的文档对象模型(DOM)。 XML的意思是“可扩展标记语言“(eXtensible Markup Language)。它允许你创建你自己的文档标记。在为浏览器标记文档...
14.4 在服务器上生成WML 14.5 WROX的WML应用 14.6 WML脚本 14.6.1 基本概念 14.6.2 字节码 14.6.3 如何从WML上调用脚本函数 14.7 脚本库 14.7.1 决定浏览器的状态—WMLBrowser 脚本库 14.7.2 Dialogs库 ...
抽取查询对象,简化查询,自动生成QueryModel自动驼峰装换生成VO对象,提供特定注解,@ View @AssociationView @CollectionView @MapView可在开发中运行(增量运行可随时修改,增加,删除类属性后继续运行,此时将...
xml2结构 该模块将 xml 转换为 golang 结构。