DOM方式生成xml文档

//创建一个DocumentBuilderFactory对象
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		//创建一个DocumentBuilder对象
		DocumentBuilder db = null;
		try {
			db = dbf.newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return db;
public void creatXML() {
		DocumentBuilder db = getDocumentBuilder();
		Document document = db.newDocument();
		Element bookStore = document.createElement("bookstore");
		//向bookstore根节点中添加子节点book
		Element book = document.createElement("book");
		Element name = document.createElement("name");
		//Element的nodeValue的返回值为空,所以不能用setNodeValue设置文本值,可以用setTextContent
//		name.setNodeValue("小王子");
		name.setTextContent("小王子");
		book.appendChild(name);
		book.setAttribute("id", "1");
		//将book节点添加到bookstore根节点中
		bookStore.appendChild(book);
		//将bookstore根节点(已经包含book节点)添加到dom树中
		document.appendChild(bookStore);
		
		
		/*
		 * 生成xml文件
		 */
		//创建TransformerFactory对象
		TransformerFactory tff = TransformerFactory.newInstance();
		try {
			//创建Transformer对象
			Transformer tf = tff.newTransformer();
			//通过Transformer对象的setOutputProperty方法实现换行。OutputKeys.INDENT(是否换行)
			tf.setOutputProperty(OutputKeys.INDENT, "yes");
			//通过Transformer对象的transform方法将代码中的dom树转换为xml文件
			tf.transform(new DOMSource(document), new StreamResult("books1.xml"));
		} catch (TransformerConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (TransformerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

生成的xml文档


<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<bookstore>
    <book id="1">
        <name>小王子</name>
    </book>
</bookstore>

standalone=“yes” 说明当前的xml文件是没有dtd和schema作为他的说明文档的
standalone=“no” 说明是有scheme和dtd文件解释说明它的内容允许有哪些值以及值的一些形式
//通过setXmlStandalone的方法,将standalone设为yes,并且不显示
document.setXmlStandalone(true);

猜你喜欢

转载自blog.csdn.net/weixin_42545898/article/details/88040056