创建XML(1/4)--通过DOM方式

注:生成如下内容的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属性

  1. 先创建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;
    	}
  2. 创建根节点和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();
		}

猜你喜欢

转载自blog.csdn.net/qq_37335810/article/details/81109484