DOM方式生成xml文档

xml文件的写入 专栏收录该内容
4 篇文章 0 订阅
//创建一个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);

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

fandatvwt

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值