-
2022-06-10 19:07:57
最近项目有个需求,需要根据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"?> <Head> <name>LQ</name> <age>18</age> </Head>
更多相关内容 -
java 生成xml文件
2022-03-04 21:47:31DOM方式生成 XML 文件 首先创建 DOM 树 的部分: 创建 DocumentBuilderFactry 对象 //创建一个 DocumentBuilderFactory 对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 创建 ...DOM方式生成 XML 文件
首先创建 DOM 树 的部分:
创建 DocumentBuilderFactry 对象
//创建一个 DocumentBuilderFactory 对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
创建 DocumentBuilder 对象
//创建DocumentBuilder对象 DocumentBuilder db = dbf.newDocumentBuilder();di
创建 Document 对象
//创建 Document 对象 Document document = db.newDocument();
创建根节点
//创建根节点 Element school = document.createElement("school");
创建子节点
//创建子节点 Element student = document.createElement("student");
创建 student 的子节点
//创建student的子节点 Element name = document.createElement("name"); Element age = document.createElement("age"); Element address = document.createElement("address");
给 student 的子节点添加文内容
//给 name 节点添加 文本内容 name.setTextContent("小明"); age.setTextContent("18"); address.setTextContent("北京市海定区五道口");
把 student 的子节点添加到 student 节点 下
//把子节点 添加到 student 节点下 student.appendChild(name); student.appendChild(age); student.appendChild(address);
向 student 节点 添加属性和属性值
//向 studet 节点添加属性和属性值 student.setAttribute("id", "1");
向根节点下添加 student 节点
//向 school 添加子节点 school.appendChild(student);
将根节点添加到 dom 树中
//将 根节点(已经包含子节点 )添加到dom树中 document.appendChild(school);
DOM 树生成完事了
接着将 DOM 树转换成 XML 文件创建 TransformerFactory 对象
//创建 TransformerFactory 对象 TransformerFactory tff = TransformerFactory.newInstance();
创建 Transformer 对象
//创建 Transformer 对象 Transformer tf = tff.newTransformer();
使用 Transformer 的 transform 方法把 DOM 树转换成 XML 文件
//使用 Transformer 的 transform 方法把Dom树转换成 XML 文件 tf.transform(new DOMSource(document), new StreamResult(new File("School_01.xml")));
生成 XML 文件完事
运行结果:<?xml version="1.0" encoding="UTF-8" standalone="no"?><school><student id="1"><name>小明</name><age>18</age><address>北京市海定区五道口</address></student></school>
我们可以看到生成 XML 文件成功了,但是生成的内容是一整行,没有自动换行,不易读
设置XML 文件自动换行
//设置生成的 XML 文件自动换行 tf.setOutputProperty(OutputKeys.INDENT, "yes");
再次运行结果,可以看到生成的 XML 文件自动换行了:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <school> <student id="1"> <name>小明</name> <age>18</age> <address>北京市海定区五道口</address> </student> </school>
此外,可以看到,在 XML 文件申明部分中,有 standalone 这个属性,该属性表示当前 XML 是否有相对应的 dtd 或 scheam 文件作为其说明文档。
若属性值为“yes",则代表当前 XM了 文件没有 dtd 或 schema 文件作为其说明文档。
由于没有用到 dtd 或 schema ,所以可以 通过 Document 的 setXmlStandalone()方法将该属性隐藏掉。
//隐藏 XML文件 standalone 属性 document.setXmlStandalone(true);
再次测试可以发现已经没有该属性了。
完整代码
try { //创建一个 DocumentBuilderFactory 对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //创建DocumentBuilder对象 DocumentBuilder db = dbf.newDocumentBuilder(); //创建 Document 对象 Document document = db.newDocument(); //隐藏 XML文件 standalone 属性 document.setXmlStandalone(true); //创建根节点 Element school = document.createElement("school"); //创建子节点 Element student = document.createElement("student"); //创建student的子节点 Element name = document.createElement("name"); Element age = document.createElement("age"); Element address = document.createElement("address"); //给 name 节点添加 文本内容 name.setTextContent("小明"); age.setTextContent("18"); address.setTextContent("北京市海定区五道口"); //把子节点 添加到 student 节点下 student.appendChild(name); student.appendChild(age); student.appendChild(address); //向 studet 节点添加属性和属性值 student.setAttribute("id", "1"); //向 school 添加子节点 school.appendChild(student); //将 根节点(已经包含子节点 )添加到dom树中 document.appendChild(school); //..将 dom树转换为 XML文件 //创建 TransformerFactory 对象 TransformerFactory tff = TransformerFactory.newInstance(); //创建 Transformer 对象 Transformer tf = tff.newTransformer(); //设置生成的 XML 文件自动换行 tf.setOutputProperty(OutputKeys.INDENT, "yes"); //使用 Transformer 的 transform 方法把Dom树转换成 XML 文件 tf.transform(new DOMSource(document), new StreamResult(new File("School_01.xml"))); } catch (ParserConfigurationException e) { e.printStackTrace(); }catch (TransformerException e) { e.printStackTrace(); } }
-
java生成xml文件
2021-06-22 17:36:47//签名文件 public File createXml_p(String name,String certSN,String signatureValue){ try{ //1.创建document对象 Document document = DocumentHelper.createDocument(); //2.创建根节点 ...//签名文件 public File createXml_p(String name,String certSN,String signatureValue){ try{ //1.创建document对象 Document document = DocumentHelper.createDocument(); //2.创建根节点 Element root = document.addElement("Signature"); root.addAttribute("xmlns:xs", "http://www.w3.org/2001/XMLSchema"); Element EBDVersion = root.addElement("Version"); EBDVersion.addText("1"); Element RelatedEBD = root.addElement("RelatedEBD"); Element EBDID = RelatedEBD.addElement("EBDID"); EBDID.addText(name);//加密文件名 Element CertSN = root.addElement("CertSN"); CertSN.addText(certSN);//每个地区证书 Element SignatureAlgorithm = root.addElement("SignatureAlgorithm"); SignatureAlgorithm.addText("SM2-SM3"); Element SignatureValue = root.addElement("SignatureValue"); SignatureValue.addText(signatureValue);//签名 // 5、设置生成xml的格式 OutputFormat format = OutputFormat.createPrettyPrint(); // 设置编码格式 format.setEncoding("UTF-8"); // 6、生成xml文件 File file = new File("D:/test"+"/EBDS_EBDB_"+name +".xml"); XMLWriter writer = new XMLWriter(new FileOutputStream(file), format); // 设置是否转义,默认使用转义字符 writer.setEscapeText(false); writer.write(document); writer.close(); System.out.println("生成应急广播签名文件成功"); return file; }catch(Exception e){ // TODO Auto-generated catch block e.printStackTrace(); } return null; }
-
Java 生成XML文档
2021-11-27 14:35:57创建一个文件输出流,用于存储xml文件 将文件输出流,转换为xml存储输出流 写出文档 释放资源 1.通过文档帮助器(DocumentHelper),创建空的文档对象 Document doc = DocumentHelper.creatDocument(); 2.通过文档Java 生成XML文档
一、编写XML文档
二、数据的生成
一、编写XML文档
步骤:
- 通过文档帮助器(DocumentHelper),创建空的文档对象
- 通过文档对象,向其中添加根节点
- 通过根节点对象root,丰富子节点
- 创建一个文件输出流,用于存储xml文件
- 将文件输出流,转换为xml存储输出流
- 写出文档
- 释放资源
1.通过文档帮助器(DocumentHelper),创建空的文档对象
Document doc = DocumentHelper.creatDocument();
2.通过文档对象,向其中添加根节点
Element root = doc.addElement("根节点名称");
3.通过根节点对象root,丰富子节点
Element e = root.addElement("元素名称");
4.创建一个文件输出流,用于存储xml文件
FileOutputStream fos = new FileOutputStream("要存储的位置");
5.将文件输出流,转换为xml存储输出流
XMLWriter xw = new XMLWriter(fos);
6.写出文档
xw.write(doc);
7.释放资源
xw.close();
举个例子
//1. 文档帮助器,创建一个文档对象 Document doc = DocumentHelper.creatDocument(); //2. 给文档添加一个根节点 Element books = doc.addElement("books"); //3. 通过根节点,丰富子节点 for(int i=0;i<100;i++){ Element book = books.addElement("book"); Element name = book.addElement("name"); name.setText(i+"卖火柴的小女孩"); Element info = book.addElement("info"); info.setText(i+"有铀元素制作的小火柴"); book.addAttribute("id",100+i+""); } //4. 创建一个文件输出流 FileOutputStream fos = new FileOutputStream("D://1//books.xml"); //5. 将输出流转换为XML输出流 XMLWrite xw = new XMLWrite(fos); //6. 写出文档 xw.write(doc); //7. 释放资源 xw.close();
二、数据的生成
// XStream 使用
- 创建XStream对象
- 修改生成的目标节点
- 传入对象,开始生成
//=============
前提是:需要创建好 对象
比如:
Person p = new Person(); p.setName("张三"); p.setAge(18); // 省略 构造方法、setget方法、toString等
1.创建XStream对象
XStream x = new XSTream();
2.修改生成的目标节点
x.alias("person",Person.class);
3.传入对象,开始生成
String xml = x.toXML(p);
4.可以通过控制台查看生成的结果
System.out.println(xml);
-
Java 创建XML文件
2021-03-17 23:03:31package ...import java.io.File;import java.util.Arrays;import java.util.List;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.t... -
java根据xml修改生成新的xml文件.zip
2019-08-19 14:40:18例如xml文件的形式是<student><age>1</age><age2>2</age2></student>,在Java文件中设置demo路径,要替换的值,最后分别生成xml文件,例如要换成aa,则xml两个,一个为<student><age>aa</age><age>2</age></student>,... -
通过Java创建XML文档的几种方法
2021-03-17 20:49:40在这类技术领域,W3C提出了 DOM 和 SAX规范用来解析数据,Sun提供了Java XML Pack,而 Apache则推出了Xerces 和Xalan。然而,几乎没有什么关注的目光投射到输出XML这一问题上来。把JavaBeans和Swing组件变成 XML的... -
Java生成XML文件与XML文件的写入
2022-02-20 16:58:12既然能在代码中解析XML文档获取数据,当然也能通过代码动态生成XML文档了。 与解析XML一样,生成XML文档也是用到了那4种方法。 一:DOM方法生成XML 步骤: 1:创建DocumentBuilder:DocumentBuilder builder=... -
Java生成xml文件的四种方式
2020-12-10 11:26:53import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import ... -
JAVA 解析XML生成XML文档实例
2013-12-13 14:06:35JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML -
使用Java创建xml文件
2021-02-12 09:25:19packageorg.xml.example;importjava.io.File;importjava.io.StringWriter;importjavax.xml.parsers.DocumentBuilder;importjavax.xml.parsers.DocumentBuilderFactory;importjavax.xml.parsers.ParserConfigurationE... -
java生成xml格式文件的方法
2020-09-02 01:22:54主要介绍了java生成xml格式文件的方法,涉及java节点遍历与属性操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下 -
java基础 创建xml文件
2021-02-28 13:10:49import java.io.File;import java.io.StringWriter;import java.security.KeyStore.Builder;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import j... -
JAVA 生成 XML文件
2009-04-03 23:56:50一个可以用java自动生成xml的文件 参考此文件可以从数据库里面提取数据后生成xml数据库 -
java创建xml文件
2012-10-24 13:20:18java创建xml文件,直接运行 main 方法看效果. -
Java生成XML文件响应到前端
2021-04-17 07:02:52//goods是allGoods的子节点 } //(7)输出文档到文件中,创建XML转换器 TransformerFactory tf = TransformerFactory.newInstance() ; Transformer t =null; try{ t=tf.newTransformer() ; } catch... -
java生成XML文件.zip
2021-08-31 16:07:15java生成xml文件示例 -
使用JAVA创建XML文件复制代码直接可以运行!
2018-07-04 15:20:24因为公司有大量需求需要人工的做XML,也就是复制一条XML更改一些变动的数据而已,为了偷懒我直接用JAVA做XML分分钟几千条完成,简直不要太爽。 -
使用Java自动生成Java类和XML文件
2019-05-25 02:09:37NULL 博文链接:https://coral.iteye.com/blog/453718 -
JAVA生成XML文件的四种方法
2021-03-13 15:45:02JAVA生成XML文件的四种方法 -
java生成XML的方法【附demo源码下载】
2020-08-31 21:18:37主要介绍了java生成XML的方法,涉及java针对xml格式文件的简单操作技巧,并附带demo源码供读者下载参考,需要的朋友可以参考下 -
java生成xml字符串和创建xml本地文件
2017-10-04 16:52:08之前在网上看到了很多java生成xml字符串和创建xml本地文件的文章,但是感觉不太完整和解释不太详细(可能是我没有找到。。。)! 所以我自己总结了一下知识,希望对大家有用,也方便自己查阅!! 这篇博客的思路:... -
DOM4J、DOM4J-XPATH解析XML及通过Java生成XML文件
2021-07-24 16:11:28创建一个指向XML文件的输入流 FileInputStream fis = new FileInputStream(“xml文件的地址”); 创建一个XML读取工具对象 SAXReader sr = new SAXReader(); 使用读取工具对象, 读取XML文档的输入流 , 并得到文档... -
java中生成xml文件,并上传至ftp服务器
2017-09-30 15:15:30JAVA中生成xml文件到指定路径和上传到ftp服务器到指定路径的方法。