关于Java生成指定格式的xml文档

<pre name="code" class="java">/**
*实体类
*/
package cn.voicecyber.update.entity;

public class Bug {
	private String C001; // 编号
	private int C002; // 类别
	private int C003;// 所属模块编号
	private String C004;// 所属模块名称
	private int C005;// 处理日期
	private int C006;// 重要等级
	private String C007;// 更新内容
	private String C008;// 更新内容对应ID
	private String C009;// 所属模块号对应ID
	private String C010;// 版本号

	public Bug() {
		super();
	}

	public Bug(String c001, int c002, int c003, String c004, int c005,
			int c006, String c007, String c008, String c009, String c010) {
		super();
		C001 = c001;
		C002 = c002;
		C003 = c003;
		C004 = c004;
		C005 = c005;
		C006 = c006;
		C007 = c007;
		C008 = c008;
		C009 = c009;
		C010 = c010;
	}

	public String getC001() {
		return C001;
	}

	public void setC001(String c001) {
		C001 = c001;
	}

	public int getC002() {
		return C002;
	}

	public void setC002(int c002) {
		C002 = c002;
	}

	public int getC003() {
		return C003;
	}

	public void setC003(int c003) {
		C003 = c003;
	}

	public String getC004() {
		return C004;
	}

	public void setC004(String c004) {
		C004 = c004;
	}

	public int getC005() {
		return C005;
	}

	public void setC005(int c005) {
		C005 = c005;
	}

	public int getC006() {
		return C006;
	}

	public void setC006(int c006) {
		C006 = c006;
	}

	public String getC007() {
		return C007;
	}

	public void setC007(String c007) {
		C007 = c007;
	}

	public String getC008() {
		return C008;
	}

	public void setC008(String c008) {
		C008 = c008;
	}

	public String getC009() {
		return C009;
	}

	public void setC009(String c009) {
		C009 = c009;
	}

	public String getC010() {
		return C010;
	}

	public void setC010(String c010) {
		C010 = c010;
	}

}
/**
*开始
*/
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

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;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class Xml2 {
	/**
	 * 将XML文件输出到指定的路径
	 * 
	 * @param doc
	 * @param fileName
	 * @throws Exception
	 */
	public static void main(String[] args) {
		Date date = new Date();
		SimpleDateFormat fomat2 = new SimpleDateFormat("yyyyMMddHHmmss");
		String mydate = fomat2.format(date);
		String outputPath = "D:/Java/XML/UpdateInfo" + mydate + ".xml";
		generateXml(outputPath);
	}
	
	public static void generateXml(String outputPath) {
		try {
			/*********获取数据库连接*************/
			Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();// 数据库驱动
			String url = "jdbc:oracle:thin:@192.168.4.182:1521:PFORCL";// 数据库链接地址
			String user = "PFDEV831";// 用户名
			String password = "pfdev831";// 密码
			Connection conn = DriverManager.getConnection(url, user, password);// 建立connection
			Statement stmt = conn.createStatement();
			conn.setAutoCommit(false);// 更改jdbc事务的默认提交方式

			String sql = "select * from t_update_LIST";// 查询语句
			ResultSet rs = stmt.executeQuery(sql);// 得到结果集
			conn.commit();// 事务提交
			conn.setAutoCommit(true);// 更改jdbc事务的默认提交方式
			List<Bug> list = new ArrayList<Bug>();// 创建取结果的列表,之所以使用列表,不用数组,因为现在还不知道结果有多少,不能确定数组长度,所有先用list接收,然后转为数组
			while (rs.next()) {// 如果有数据,取出添加如list
				Bug bug = new Bug();
				bug.setC001(rs.getString(1));
				bug.setC002(rs.getInt(2));
				bug.setC003(rs.getInt(3));
				bug.setC004(rs.getString(4));
				bug.setC005(rs.getInt(5));
				bug.setC006(rs.getInt(6));
				bug.setC007(rs.getString(7));
				bug.setC008(rs.getString(8));
				bug.setC009(rs.getString(9));
				bug.setC010(rs.getString(10));
				list.add(bug);
			}
			if (list != null && list.size() > 0) {// 如果list中存入了数据,转化为数组
				Bug[] arr = new Bug[list.size()];// 创建一个和list长度一样的数组
				System.out.println(arr.length); // 看下数组长度是多少,可以省略

				for (int i = 0; i < list.size(); i++) {
					arr[i] = list.get(i);// 给数组赋值
				}
				List<Bug> list1 = Arrays.asList(arr);// 将数组转换成List
				Document doc = generateXml(list1);// 生成XML文件
				outputXml(doc, outputPath);// 将文件输出到指定的路径
			}
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("出现异常");
		}
	}

	private static void outputXml(Document doc, String fileName)
			throws Exception {
		TransformerFactory tf = TransformerFactory.newInstance();
		Transformer transformer = tf.newTransformer();
		DOMSource source = new DOMSource(doc);
		transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
		transformer.setOutputProperty(OutputKeys.INDENT, "yes");// 设置文档的换行与缩进
		PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
		StreamResult result = new StreamResult(pw);
		transformer.transform(source, result);
		System.out.println("生成XML文件成功!");
	}

	/**
	 * 生成XML文件
	 * 
	 * @param list
	 * @return
	 */
	public static Document generateXml(List<Bug> list) {
		Document doc = null;
		Element root = null;
		try {
			DocumentBuilderFactory factory = DocumentBuilderFactory
					.newInstance();
			DocumentBuilder builder = factory.newDocumentBuilder();
			doc = builder.newDocument();
			root = doc.createElement("Modules");
			doc.appendChild(root);
		} catch (Exception e) {
			e.printStackTrace();
			return null;// 如果出现异常,则不再往下执行
		}

		int len = list.size();
		Element element;
		for (int i = 0; i < len; i++) { // 打印的顺序是根据英文字母先后顺序排序的
			Bug Bug = list.get(i);
			element = doc.createElement("Module");
			element.setAttribute("SerialNo", "" + Bug.getC001());
			element.setAttribute("Name", "" + Bug.getC001());
			element.setAttribute("Type", "" + Bug.getC002());
			element.setAttribute("ModuleID", "" + Bug.getC003());
			element.setAttribute("ModuleName", "" + Bug.getC004());
			//element.setAttribute("ErrorReply", "" + Bug.getC005());
			element.setAttribute("Levels", "" + Bug.getC006());
			element.setAttribute("Content", "" + Bug.getC007());
			element.setAttribute("Lang", "" + Bug.getC008());
			element.setAttribute("ModuleLangID", "" + Bug.getC009());
			element.setAttribute("Description", "" + Bug.getC010());
			root.appendChild(element);
		}
		return doc;
	}
}
源码下载: xml
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java提供了多种方式生成XML文件。下面介绍两种常用的方式。 1. 使用DOM生成XML文件 DOM是一种树形结构的API,可以通过创建XML文档树来生成XML文件。以下是一个简单的Java代码示例,演示如何使用DOM生成一个名为person.xmlXML文件: ```java import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; public class GenerateXml { public static void main(String[] args) throws Exception { // 创建XML文档对象和根元素 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.newDocument(); Element root = doc.createElement("Person"); doc.appendChild(root); // 添加子元素和文本节点 Element nameNode = doc.createElement("name"); nameNode.appendChild(doc.createTextNode("John")); root.appendChild(nameNode); Element ageNode = doc.createElement("age"); ageNode.appendChild(doc.createTextNode("30")); root.appendChild(ageNode); // 将XML文档保存到文件中 TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File("person.xml")); transformer.transform(source, result); System.out.println("XML file saved!"); } } ``` 运行该程序将会生成一个名为person.xml的文件,包含以下内容: ```xml <?xml version="1.0" encoding="UTF-8" standalone="no"?> <Person> <name>John</name> <age>30</age> </Person> ``` 2. 使用JAXB生成XML文件 JAXB是Java Architecture for XML Binding的缩写,可以通过注解将Java对象转换为XML文件。以下是一个简单的Java代码示例,演示如何使用JAXB生成一个名为person.xmlXML文件: ```java import java.io.File; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } public class GenerateXml { public static void main(String[] args) throws Exception { Person p = new Person("John", 30); // 使用JAXB将对象转换为XML并保存到文件中 JAXBContext context = JAXBContext.newInstance(Person.class); Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(p, new File("person.xml")); System.out.println("XML file saved!"); } } ``` 运行该程序将会生成一个名为person.xml的文件,包含以下内容: ```xml <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <person> <age>30</age> <name>John</name> </person> ``` 可以看到,JAXB将属性按照字母顺序排序,并将Java对象转换为小写的XML元素。如果需要自定义XML元素的名称和属性的顺序,可以使用JAXB注解进行配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值