在此记录一个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反射的机制进行,还比较实用。
相关推荐
1. **解析XML**:使用`javax.xml.parsers.DocumentBuilderFactory`和`DocumentBuilder`来解析XML字符串,生成一个`org.w3c.dom.Document`对象。 2. **创建实体类的Java类型信息**:JAXB需要知道实体类的结构,通过`@...
自己写的一个xml映射实体对象类,附件为一个AXIS客户端代码生成文档
标题中的“java-xml自动生成对象实体以及与xml相互转化”指的是使用Java技术将XML文件转换为Java对象(即Java Bean),反之亦然。这一过程通常涉及到以下几个关键知识点: 1. **Java DOM解析器**:DOM(Document ...
本教程将详细介绍如何使用XSD文件生成C#实体类,以便于解析XML数据和生成XML文档。 首先,我们需要一个XSD文件,它定义了XML文档的结构和数据类型。XSD文件使用元素、属性和约束来描述XML文档的结构。例如,一个...
C#实体类则是将XML数据结构映射到面向对象的编程模型,使得我们可以方便地操作XML中的数据。 生成XML的C#实体类通常涉及到以下步骤: 1. **理解XML结构**:首先,你需要理解要处理的XML文档的结构。这包括根元素、...
在Java编程中,有时我们需要将实体类对象转换成XML格式的字符串,这在数据交换、存储或网络传输中非常常见。这个过程通常涉及到对象序列化和XML处理技术。本篇文章将详细讲解如何根据实体类生成XML格式的字符串,并...
- 对于通过hbm.xml生成的实体类,需要在hibernate.cfg.xml中添加相应的映射文件路径。 3. **测试连接**: - 运行测试程序,验证Hibernate是否能够正确读取映射信息并与数据库交互。 通过以上步骤,我们不仅能够...
在这个场景下,"Freemarker代码生成器实体映射xml的ftl模板文件"是指利用Freemarker模板技术来创建一个用于生成XML实体映射文件的模板。这个`XML.ftl`文件就是核心,它是Freemarker模板的实例,其中定义了如何根据...
2. **XML配置文件**: 在这个场景中,XML文件是generator.xml,它是IBTAS用来定义生成实体类规则的配置文件。这个文件通常包含了数据库连接信息(如URL、用户名、密码)、目标表名、实体类命名规则等。通过修改driver...
1. **JDOM库**:JDOM是Java Document Object Model的缩写,它提供了一种在内存中表示XML文档的方式,通过创建SAXBuilder或DOMBuilder实例解析XML文件,生成Element对象树。JDOM提供了丰富的API来操作这些对象,包括...
总的来说,"generator-连接数据库生成实体类和mybatis的xml文件"这一主题涵盖了数据库连接、代码生成工具的使用、MyBatis的实体类和XML配置文件的理解等多个重要知识点。通过熟练掌握这些内容,开发者可以有效地提高...
这个XML文件包含了工具所需的参数,如数据库连接信息(包括数据库URL、用户名和密码)、需要逆向生成的数据库表名以及生成实体类的相关设置。例如,你可以指定实体类的包名、类名前缀、是否生成getter和setter方法、...
本压缩包“mybatis实体对象生成(代码生成器).zip”提供了一个工具,能够自动生成MyBatis项目的DAO层、Model层以及Mapper映射文件,极大地提高了开发效率。 首先,我们来看“generatorConfig.xml”文件。这是...
- 在Mybatis中,实体类的属性通常会与XML映射文件中的结果映射(resultMap)对应,使得在查询时可以自动将数据库结果转化为实体对象。 2. **DaoMapper接口**: - Dao(Data Access Object)接口定义了对数据库的...
接着,通过命令行或者集成到构建工具(如Maven或Gradle)中运行`Hibernate-tools`,执行反编译数据库模式、生成实体类等任务。 4. **自定义模板** `Hibernate-tools`允许开发者自定义模板,以满足特定的代码风格和...
标题“xmljson生成实体类”指的是一个工具,它可以自动化地将XML或JSON格式的数据转换为Java实体类。这种工具通常会分析XML或JSON结构,然后自动生成对应的Java类,这些类包含了与原始数据相对应的属性和getter/...
3. **生成实体类**:根据表的字段信息,工具会自动生成对应的Java实体类,每个字段对应类的一个属性,字段类型则转化为对应的Java类型。 4. **生成Mapper接口**:同时,工具还会创建一个Mapper接口,接口中包含与表...
总结起来,Java通过模板生成XML并发送报文涉及XML文档对象的创建、元素的构建、模板引擎的应用以及HTTP请求的发送。理解这些概念并熟练掌握相关API,能帮助开发者在实际工作中高效地处理XML数据的生成与传输。
7. **使用生成的实体类和 XML**:现在,你可以在代码中直接使用生成的实体类进行 CRUD 操作,MyBatis 会根据 XML 配置文件自动执行对应的 SQL 语句。 通过这个工具,开发者可以节省大量的手动编写代码的时间,更...
5. **生成序列化和反序列化代码**:为了方便XML数据和Java对象之间的转换,工具还会生成解析XML和生成XML的代码,通常是基于JAXB(Java Architecture for XML Binding)或其他类似库。 除了XSD转Java,有些工具还...