現(xiàn)在應(yīng)用中,有很多方法來(lái)解析xml,多少DOM才是JDK解析xml的根本,這個(gè)是我從網(wǎng)上摘的,不錯(cuò)。
package com.Gavin.xml;

//文件類
import java.io.File;
import java.io.FileNotFoundException;

//文件輸出類
import java.io.FileOutputStream;
import java.io.IOException;

//負(fù)責(zé)解析的類
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;

//xml映射輸入和輸出類
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

//節(jié)點(diǎn)類
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
{
// 構(gòu)造的原始數(shù)據(jù)對(duì)象

String train[] =
{ "T1次", "K185次", "Z17次" };

String type[] =
{ "特快", "普快", "直達(dá)" };

String startTime[] =
{ "15:45", "11:47", "18:10" };

// 解析器工廠類
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

// 解析器
DocumentBuilder builder = factory.newDocumentBuilder();

// 操作的Document對(duì)象
Document document = builder.newDocument();

// 設(shè)置XML的版本
document.setXmlVersion("1.0");

// 添加注釋
Comment xmlComment = document.createComment("本文檔中內(nèi)容主要用于測(cè)試!");

// 將注釋添加到xml中
document.appendChild(xmlComment);

// 設(shè)置根節(jié)點(diǎn)名稱
Element traintimelist = document.createElement("火車時(shí)刻表");

// 把節(jié)點(diǎn)添加到根節(jié)點(diǎn)
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("開(kāi)車時(shí)間"));

}
}

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("開(kāi)車時(shí)間");
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]));

}
}
// 開(kāi)始把Document映射到文件
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
// 設(shè)置輸出結(jié)果
DOMSource domSource = new DOMSource(document);
// 生成xml文件
File file = new File("北京到長(zhǎng)沙火車時(shí)刻表.xml");

// 判斷是否存在,如果不存在,則創(chuàng)建

if (!file.exists())
{
file.createNewFile();
}
// 文件輸出流
FileOutputStream out = new FileOutputStream(file);
// 設(shè)置輸入源
StreamResult xmlResult = new StreamResult(out);
// 輸出xml文件
transformer.transform(domSource, xmlResult);
// 測(cè)試文件輸出的路徑
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" ?>
- <!-- 本文檔中內(nèi)容主要用于測(cè)試!
-->
- <火車時(shí)刻表>
- <車次 類別="特快">
<名字>T1次</名字>
<開(kāi)車時(shí)間>15:45</開(kāi)車時(shí)間>
</車次>
- <車次 類別="普快">
<名字>K185次</名字>
<開(kāi)車時(shí)間>11:47</開(kāi)車時(shí)間>
</車次>
- <車次 類別="直達(dá)">
<名字>Z17次</名字>
<開(kāi)車時(shí)間>18:10</開(kāi)車時(shí)間>
</車次>
</火車時(shí)刻表>