java 生成xml文件库_通过java生成xml文件

-----------------------有疑问请留言,我会尽量解答-------------------------------

要点:1通过dom工厂类生成dom类,dom类新建dom对象

2通过file指定文件生成所在的目录并且指定输入源。

3通过Transformer工厂类生成Transformer并且导入dom结构到文件中

方法:

Document.createElement()创建根节点

Document.createComment()创建注释

Document.appendChild()添加子节点

Document.createCDATASection()添加cdata(注:防止内容被当做节点解析)

Element.setAttribute()给节点加属性

Transformer.setOutputProperty()格式化xml文件(否则所有dom结构会输出在一行里)

实例:(jdk为1.6,需要注意引用的包是w3c的)

package com.focustech.ins.web.addlist.controller;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import com.caucho.xtpdoc.Book;

import org.jdom.Comment;

import org.w3c.dom.Document;

import org.jdom.JDOMException;

import org.jdom.output.Format;

import org.jdom.output.XMLOutputter;

import org.w3c.dom.CDATASection;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.transform.OutputKeys;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

/**

* Created by qiyanzhou on 2016/12/19.

*/

public class CreateXmlController {

public void BuildXMLDoc() throws Exception {

// 创建根节点 并设置它的属性 ;

//解析器工厂类

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

//解析器

DocumentBuilder builder = factory.newDocumentBuilder();

//操作的Document对象

Document document = builder.newDocument();

//设置XML的版本

document.setXmlVersion("1.0");

//创建根节点

Element root = document.createElement("function-config");

//添加注释

Node common=document.createComment("main config file ,this config file is required");

root.appendChild(common);

Element globalSql = document.createElement("global-sql");

Element sql = document.createElement("sql");

sql.setAttribute("id", "global");

CDATASection cdataPart1 = document.createCDATASection("select * from dual");

root.appendChild(globalSql);

globalSql.appendChild(sql);

sql.appendChild(cdataPart1);

//核心sql

Element system = document.createElement("system");

system.setAttribute("sysId", "0000");

root.appendChild(system);

Element function = document.createElement("function");

function.setAttribute("id", "20160913");

function.setAttribute("beanName", "");

system.appendChild(function);

Element executeSql = document.createElement("execute-sql");

function.appendChild(executeSql);

Element sqlPart2 = document.createElement("sql");

sqlPart2.setAttribute("id","activefinancial");

CDATASection mainSql = document.createCDATASection("核心sql");

sqlPart2.appendChild(mainSql);

executeSql.appendChild(sqlPart2);

Element funcSql = document.createElement("func-sql");

funcSql.setAttribute("id","20160913");

funcSql.setAttribute("sqlId","activefinancial");

funcSql.setAttribute("loop","false");

funcSql.setAttribute("sqlType","select");

funcSql.setAttribute("argGroup","0");

funcSql.setAttribute("executer","");

function.appendChild(funcSql);

Element params = document.createElement("params");

params.setAttribute("id","");

params.setAttribute("errMsg","error");

funcSql.appendChild(params);

//将根节点添加到Document对象中

document.appendChild(root);

//开始把Document映射到文件

Transformer transformer = TransformerFactory.newInstance().newTransformer();

//控制缩进(格式化xml文件,避免输出在一行)

transformer.setOutputProperty(OutputKeys.INDENT, "yes");

//设置输出结果

DOMSource domSource = new DOMSource(document);

//生成xml文件

File file = new File("C:\\git\\apollo\\apollo-admin\\apollo-admin-web\\src\\main\\webapp\\WEB-INF\\extend-configs\\books.xml");

//判断是否存在,如果不存在,则创建

if(!file.exists()){

file.createNewFile();

}

//文件输出流

FileOutputStream out = new FileOutputStream(file);

//设置输入源

StreamResult xmlResult = new StreamResult(out);

//输出xml文件

transformer.transform(domSource, xmlResult);

}

public static void main(String[] args) {

try {

CreateXmlController j2x = new CreateXmlController();

System.out.println("正在生成 books.xml 文件...");

j2x.BuildXMLDoc();

} catch (Exception e) {

e.printStackTrace();

}

System.out.println("c:/books.xml 文件已生成");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java中的JAXB(Java Architecture for XML Binding)来根据XSD文件生成XML。JAXB是Java EE的一部分,可以将Java对象映射到XML文档,并提供了在Java对象和XML文档之间进行换的方法。 以下是使用JAXB生成XML的基本步骤: 1. 创建一个Java类,该类的属性对应于XSD文件中的元素和类型。 2. 使用JAXB的XJC工具从XSD文件生成Java类。这可以通过在命令行中使用xjc命令或在Eclipse中使用插件来完成。 3. 在Java代码中创建JAXBContext对象,该对象负责将Java对象换为XML文档。 4. 创建Java对象,并设置其属性。 5. 使用JAXB Marshaller将Java对象换为XML文档。 以下是一个简单的示例代码: ```java import javax.xml.bind.*; import java.io.*; public class GenerateXML { public static void main(String[] args) throws JAXBException, IOException { // 创建JAXBContext对象 JAXBContext jaxbContext = JAXBContext.newInstance(Person.class); // 创建Marshaller对象 Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 创建Java对象 Person person = new Person(); person.setName("John Doe"); person.setAge(30); // 将Java对象换为XML文档 StringWriter writer = new StringWriter(); marshaller.marshal(person, writer); String xml = writer.toString(); System.out.println(xml); } } @XmlRootElement class Person { private String name; private int age; // getters and setters } ``` 在上面的示例中,我们创建了一个名为Person的Java类,并使用@XmlRootElement注解将其标记为根元素。然后,我们使用JAXBContext和Marshaller对象将Java对象换为XML文档。最后,我们使用StringWriter将XML文档输出到控制台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值