注:生成如下内容的XML文档
翻译自,慕课网:https://www.imooc.com/video/5254
-
一、创建根节点和book属性
document.createElement("bookStore");
document.appendChild(bookStore);
-
二、创建XML文件
TransformerFactory.newInstance().newTransformer().setOutputProperty(OutputKeys.INDENT, "yes")
-
三、生成节点间的文本
.setTextContent("26.6");
-
一、创建根节点和book属性
- 先创建DocumentBuilderFactory对象、DocumentBuilder对象
/** * 创建对象DocumentBuilder * 解析+生成XML文件都需要用到 */ public DocumentBuilder getDocumentBuilder() { //1、创建DocumentBuilderFactory对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //2、创建对象DocumentBuilder DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException e) { e.printStackTrace(); } return db; }
- 创建根节点和book属性 + 三、节点间文本
/** * 生成XML--createXML() */ public void createXML() { //1、创建文档对象 DocumentBuilder db = getDocumentBuilder(); //创建Document文档对象 Document document = db.newDocument(); document.setXmlStandalone(true); //2、创建节点 //创建根节点bookStore Element bookStore = document.createElement("bookStore"); //将根节点bookStore添加到document中 document.appendChild(bookStore); //创建根节点bookStorede --子节点(book id=1) Element book = document.createElement("book"); //为book节点添加属性 book.setAttribute("id", "1"); //将子节点book添加到根节点bookStores下 bookStore.appendChild(book); //为book添加子节点-name 都是通过document来创建对象 并且添加到book节点下 book-name Element name = document.createElement("name"); //添加name节点的值 name.setTextContent("小王子"); book.appendChild(name); //创建book节点的子节点book--name、price、author Element author = document.createElement("author"); author.setTextContent("大卫"); book.appendChild(author); Element price = document.createElement("price"); price.setTextContent("26.6"); book.appendChild(price); //创建根节点bookStorede --子节点(book id=2) Element book2 = document.createElement("book"); book2.setAttribute("id", "2"); bookStore.appendChild(book2); Element name2 = document.createElement("name"); name2.setTextContent("星星之火"); book2.appendChild(name2);
二、创建XML文件
//3、创建XML文件
//创建TransformerFactory对象
TransformerFactory tff = TransformerFactory.newInstance();
try {
//创建Transformer对象
Transformer tf = tff.newTransformer();
//设置生成的XML文档 ---自动换行---
tf.setOutputProperty(OutputKeys.INDENT, "yes");
System.out.println("正在生成中...");
tf.transform(new DOMSource(document), new StreamResult(new File("books1.xml")));
} catch (TransformerConfigurationException e) {
e.printStackTrace();
System.out.println("生成异常1");
} catch (TransformerException e) {
System.out.println("生成异常2");
e.printStackTrace();
}