package com.zhangjie.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Comment; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class CreateXMLContent { public static void main(String[] args) { try{ //构造的原始数据对象 String train[] = {"T1次","K185次","Z17次"}; String type[] = {"特快","普快","直达"}; String startTime[] = {"15:45","11:47","18:10"}; //解析器工厂类 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //解析器 DocumentBuilder builder = factory.newDocumentBuilder(); //操作的Document对象 Document document = builder.newDocument(); //设置XML的版本 document.setXmlVersion("1.0"); //添加注释 Comment xmlComment = document.createComment("本文档由java学习者总版主测试,望大家支持!"); //将注释添加到xml中S document.appendChild(xmlComment); //设置根节点名称 Element traintimelist= document.createElement("火车时刻表"); //把节点添加到根节点 document.appendChild(traintimelist); for(int k = 1; k <= train.length;k++){ traintimelist.appendChild(document.createElement("车次")); } NodeList nodeList = document.getElementsByTagName("车次"); int size = nodeList.getLength(); for(int k = 0;k<size;k++){ Node node = nodeList.item(k); if(node.getNodeType() == Node.ELEMENT_NODE){ Element elementNode = (Element)node; elementNode.setAttribute("类别", type[k]); elementNode.appendChild(document.createElement("名字")); elementNode.appendChild(document.createElement("开车时间")); } } nodeList = document.getElementsByTagName("名字"); size = nodeList.getLength(); for(int k = 0; k<size;k++){ Node node = nodeList.item(k); if(node.getNodeType() == Node.ELEMENT_NODE){ Element elementNode = (Element)node; elementNode.appendChild(document.createTextNode(train[k])); } } nodeList = document.getElementsByTagName("开车时间"); size = nodeList.getLength(); for(int k = 0; k < size; k++){ Node node = nodeList.item(k); if(node.getNodeType() == Node.ELEMENT_NODE){ Element elementNode = (Element)node; elementNode.appendChild(document.createTextNode(startTime[k])); } } //开始把Document映射到文件 TransformerFactory transFactory = TransformerFactory.newInstance(); Transformer transformer = transFactory.newTransformer(); //设置输出结果 DOMSource domSource = new DOMSource(document); //生成xml文件 File file = new File("北京到长沙火车时刻表.xml"); //判断是否存在,如果不存在,则创建 if(!file.exists()){ file.createNewFile(); } //文件输出流 FileOutputStream out = new FileOutputStream(file); //设置输入源 StreamResult xmlResult = new StreamResult(out); //输出xml文件 transformer.transform(domSource, xmlResult); //测试文件输出的路径 System.out.println(file.getAbsolutePath()); }catch(ParserConfigurationException e){ e.printStackTrace(); }catch(TransformerConfigurationException e){ e.printStackTrace(); }catch(FileNotFoundException e){ e.printStackTrace(); }catch(TransformerException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }finally{ } } } 得到的xml文件如下: <?xml version="1.0" encoding="UTF-8" ?> - <!-- 本文档由java学习者总版主测试,望大家支持! -->f(clean); - <车次 类别="特快"> <名字>T1次</名字> <开车时间>15:45</开车时间> </车次> - <车次 类别="普快"> <名字>K185次</名字> <开车时间>11:47</开车时间> </车次> - <车次 类别="直达"> <名字>Z17次</名字> <开车时间>18:10</开车时间> </车次> </火车时刻表> |