import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
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.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class CreateDomXml {
//以DOM树的方式来进行一个xml文件对象的生成操作
//用于进行一个documentBuilder实例化对象的获取操作
public DocumentBuilder getDocumentBuilder()
{
//1:创建一个documentBuilderFactory实例化对象
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
//2:建立一个documentBuilder实例化对象
DocumentBuilder db=null;
try {
db=dbf.newDocumentBuilder();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return db;
}
public void createXML()
{//用于进行一个xml文件对象的创建操作
DocumentBuilder db=getDocumentBuilder();
Document document=db.newDocument();//获取一个document实例化对象,相当于将要存放到xml文件对象当中的一颗dom树
Element bookStore=document.createElement("bookStore");//通过DOM树对象来创建一个标签对象bookStore
//向根节点bookstores对象当中进行子节点对象的添加操作
Element book=document.createElement("book");//根据DOM树节点对象来创建一个新的节点对象
bookStore.appendChild(book);//将book节点对象添加到bookstores根节点对象当中去
//向所创建的book子节点对象当中进行属性的添加操作
book.setAttribute("id","1");
//向book节点对象当中进行子节点对象的添加
Element name=document.createElement("name");//通过DOM树实例对象来创建一个name子节点对象
book.appendChild(name);//将name节点对象做为book节点对象的子节点来进行添加操作
//在name标签对象的文本去进行内容的添加操作
name.setTextContent("冰与火之歌");//即在name标签对象之间来进行数据信息的添加操作
//在book标签对象当中进行author子标签对象的添加操作
Element author=document.createElement("author");
author.setTextContent("乔治马丁");
book.appendChild(author);//将author标签对象做为book标签对象的子标签来进行添加操作
//在book标签对象当中进行year子标签对象的添加操作
Element year=document.createElement("year");
year.setTextContent("2014");
book.appendChild(year);
//在book标签对象当中进行price字标签对象的添加操作
Element price=document.createElement("price");
price.setTextContent("89");
document.appendChild(bookStore);//将当前所创建的节点对象添加到DOM树对象当中作为DOM树对象的根节点
//将当前所建立的book树对象转化为一个xml文件对象
TransformerFactory tff=TransformerFactory.newInstance();
try {
//创建Transformer对象
Transformer tf=tff.newTransformer();
tf.setOutputProperty(OutputKeys.INDENT, "yes");//在将DOM树输出到指定的xml文件对象时,DOM树当中的属性会进行自动换行操作
//通过transform对象来将DOM树通过输出流(StreamResult)来将其存放到xml文件对象当中去
tf.transform(new DOMSource(document),new StreamResult(new File("xml文件/books1.xml")));//在指定的路径下将会生成对应的xml文件对象
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
CreateDomXml test=new CreateDomXml();
test.createXML();//在指定的路径下进行xml文件对象的创建操作
}
}
运行之后所生成的xml文件对象为: