给各位推荐一种用hashmap和for循环添加book节点及其内容的方法

来源:2-3 生成节点间的文本

慕的地9539986

2019-06-29 16:22

public static void domCreateXml() {
		Document d = getDocumentBuilder().newDocument();
		d.setXmlStandalone(false);
		// 向dom树中添加根节点booklib
		Element booklib = d.createElement("BookLib");

		// 将booklib添加到dom树中
		d.appendChild(booklib);
		// 向BookLib根节点中添加子节点book
		// 将book节点添加到booklib根节点中

		//创建一个map集合,把节点名称和内容添加进去
		Map <String,String>container = new HashMap<String,String>();
		container.put("name1", "不错的一本好书");
		container.put("name2", "nice book");
		container.put("author1", "不错");
		container.put("author2", "nice");
		container.put("year1", "2019");
		container.put("year2", "9102");
		container.put("price1", "100");
		container.put("price2", "001");
		container.put("language1", "Chinese");
		container.put("language2", "English");
		
		//采用for循环将key对应的value值传递进去,增加新的节点之前要先往map集合中添加内容,名字后面的序号与i相对应,以递增的形式,否则会找不到对象
		for (int i = 1; i <= 2; i++) {
			Element book = d.createElement("Book");
			booklib.appendChild(book);
			book.setAttribute("id", String.valueOf(i));
				// 添加name
				Element name = d.createElement("name");
				book.appendChild(name);
				name.setTextContent(container.get("name"+i));
				// 添加author
				Element author = d.createElement("author");
				book.appendChild(author);
				author.setTextContent(container.get("author"+i));
				// 添加year
				Element year = d.createElement("year");
				book.appendChild(year);
				year.setTextContent(container.get("year"+i));
				// 添加price
				Element price = d.createElement("price");
				book.appendChild(price);
				price.setTextContent(container.get("price"+i));
				// 添加language
				Element language = d.createElement("language");
				book.appendChild(language);
				language.setTextContent(container.get("language"+i));
		}
		// 创建TransformerFactory对象
		TransformerFactory tff = TransformerFactory.newInstance();
		// 创建Transformer对象
		try {
			Transformer tf = tff.newTransformer();
			// 对xml文件进行换行
			tf.setOutputProperty(OutputKeys.INDENT, "yes");
			// 转换成xml文件
			tf.transform(new DOMSource(d), new StreamResult(new File("booksTest.xml")));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
这种我觉得如果要创建多个book的子节点和内容的话,会比较方便


写回答 关注

1回答

  • qq_早点_1
    2019-07-06 18:43:59

    牛!强!强!

Java眼中的XML 文件写入

举例说明JAVA程序如何生成XML文档,多种生成方式任你选择

55798 学习 · 132 问题

查看课程

相似问题