相关文章推荐
腹黑的鸵鸟  ·  java ...·  4 月前    · 
谈吐大方的花卷  ·  createSymbolicLinkA ...·  5 月前    · 
威武的灯泡  ·  BOM之history对象 - ...·  1 年前    · 
胡子拉碴的课本  ·  PH11409: An API or ...·  1 年前    · 
爱看球的显示器  ·  Windows Wireguard ...·  1 年前    · 

最近项目有个需求,需要根据java对象生成XML文件,并且将文件以字节流的形式发送出去。

具体不罗嗦,直接上代码。

工具包:dom4j,不是maven项目的同学去下载dom4j依赖以后,在项目下建一个lib目录就能引入。

        <dependency>
			<groupId>dom4j</groupId>
			<artifactId>dom4j</artifactId>
			<version>1.6.1</version>
		</dependency>

demo代码,注释很详细,不多言,有疑问,欢迎提问。

import lombok.extern.java.Log; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; import java.io.*; import java.util.Arrays; public class MakeDocumentApp { public static void main(String[] args) { // 1.声明文件名称 String fileName = "xml_test"; // 2.创建dom对象 Document document = DocumentHelper.createDocument(); // 3.添加节点,根据需求添加,这里我只是设置了一个head节点,下面有name和age两个子节点 Element head = document.addElement("Head"); Element name = head.addElement("name"); name.setText("LQ"); Element age = head.addElement("age"); age.addText("18"); // 4、格式化模板 //OutputFormat format = OutputFormat.createCompactFormat(); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); // 5、生成xml文件 ByteArrayOutputStream out = new ByteArrayOutputStream(); try { XMLWriter writer = new XMLWriter(out, format); writer.write(document); writer.close(); } catch (IOException e) { System.out.println("生成xml文件失败。文件名【" + fileName + "】"); // 6、生成的XML文件 // 7、利用文件输出流输出到文件, 文件输出到了您的项目根目录下了 try (FileOutputStream fos = new FileOutputStream(fileName + ".xml")) { fos.write(out.toByteArray()); } catch (IOException e) { e.printStackTrace();

本来都保存了,回来贴一下成果图。

<?xml version="1.0" encoding="UTF-8"?>
  <name>LQ</name>
  <age>18</age>
</Head>
import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.SAXRe... @Test public void xml Test() throws TopSchemaException { Element field = Xml Utils.createRootElement("field");//一级节点 field.addAttribute("id", "sku");//设置一级节点的属性值
Spring作为一个开源框架,其底层代码非常复杂,涉及到的知识面也非常广泛,因此要想完整地用 Java 写出Spring底层代码是非常困难的。不过,我们可以简单介绍一下Spring的核心模块和一些主要的类。 Spring的核心模块包括: 1. Core Container:提供了Spring框架的基本功能,包括控制反转(IoC)和依赖注入(DI)等。 2. Data Access/Integration:提供了与各种数据访问技术和集成技术的集成支持,包括JDBC、ORM、JMS等。 3. Web:提供了与Web应用程序的集成支持,包括MVC、RESTful Web Services等。 4. AOP:提供了面向切面编程的支持。 下面以Core Container为例,给出一个简单的代码实现: public interface BeanFactory { Object getBean(String name) throws Exception; public class Xml BeanFactory implements BeanFactory { private final Map<String, Object> beans; public Xml BeanFactory(Resource resource) throws Exception { beans = new HashMap<>(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(resource.getInputStream()); NodeList nodeList = document.getElementsByTagName("bean"); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); NamedNodeMap attributes = node.getAttributes(); String beanName = attributes.getNamedItem("id").getNodeValue(); String className = attributes.getNamedItem("class").getNodeValue(); Class<?> clazz = Class.forName(className); Object instance = clazz.newInstance(); beans.put(beanName, instance); @Override public Object getBean(String name) throws Exception { Object bean = beans.get(name); if (bean == null) { throw new Exception("No bean found with name " + name); return bean; 上述代码实现了一个简单的BeanFactory,它可以从一个 XML 配置文件中读取bean的配置信息,并根据配置信息创建bean实例。当需要获取bean实例时,只需要调用getBean方法即可。 需要注意的是,上述代码仅仅是Spring底层代码的冰山一角,Spring框架的其他模块和类都非常复杂,需要深入学习和理解。