java生成XML

来源:互联网 发布:有没有便宜的淘宝店 编辑:程序博客网 时间:2024/06/05 12:08
package com.Action;import java.io.FileOutputStream;import java.io.PrintWriter;import java.util.ArrayList;import java.util.Arrays;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;import com.Bean.Edge;import com.Bean.Node;public class Test {public static void main(String[] args) {String outputPath = "src/topu.xml";generateXml(outputPath);}public static void generateXml(String outputPath) {try {String[] contain = { "老大", "老二", "老三", "老四", "老五", "老六", "老七","老八", "老九", "老么" };int[] level = { 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3 };int[] num = { 3, 2, 2, 5, 1, 1, 1, 1, 1, 1 };Node[] node = new Node[10];for (int i = 0; i < 10; i++) {node[i] = new Node();node[i].setId(i);node[i].setContain(contain[i]);node[i].setNum(num[i]);node[i].setLevel(level[i]);}Edge[] edge = new Edge[10];int[] fromID = { 0, 0, 0, 1, 2, 3, 3, 3, 3 ,0};for (int i = 0; i < 10; i++) {edge[i] = new Edge();edge[i].setId(i);edge[i].setFromID(fromID[i]);edge[i].setToID(i + 1);edge[i].setValue(100);}List<Node> listNode = Arrays.asList(node);// 将数组转换成ListList<Edge> listEdge=Arrays.asList(edge);Document doc = generateXml(listNode,listEdge);// 生成XML文件outputXml(doc, outputPath);// 将文件输出到指定的路径} catch (Exception e) {System.err.println("出现异常");}}/** * 将XML文件输出到指定的路径 *  * @param doc * @param fileName * @throws Exception */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<Node> list,List<Edge> list2) {Document doc = null;Element root = null;try {DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();doc = builder.newDocument();root = doc.createElement("topu");doc.appendChild(root);} catch (Exception e) {e.printStackTrace();return null;// 如果出现异常,则不再往下执行}int len = list.size();Element element;for (int i = 0; i < len; i++) {Node node = list.get(i);element = doc.createElement("Node");element.setAttribute("id", "" + node.getId());element.setAttribute("contain", node.getContain());element.setAttribute("num", String.valueOf(node.getNum()));element.setAttribute("level", String.valueOf(node.getLevel()));root.appendChild(element);}for (int i = 0; i < list2.size(); i++) {Edge edge = list2.get(i);element = doc.createElement("Edge");element.setAttribute("id", "" + edge.getId());element.setAttribute("fromID",String.valueOf(edge.getFromID()));element.setAttribute("toID", String.valueOf(edge.getToID()));element.setAttribute("value", String.valueOf(edge.getValue()));root.appendChild(element);}return doc;}}

0 0
原创粉丝点击