亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

xml文件已經存在如何追加內容

如何向已經存在的xml文件中追加內容

正在回答

1 回答

可以使用DOM、JDOM和SAX方式向一個已經存在的XML文件中追加內容,SAX方式比較復雜。例如:原來的XML文件是:

<?xml?version?=?"1.0"?encoding?=?"utf-8"?>
<bookstore>
	<book?id="1">
		<name>冰與火之歌</name>
		<author>喬治馬丁</author>
		<year>2014</year>
		<price>89</price>
	</book>
	<book?id="2">
		<name>安徒生童話</name>
		<year>2004</year>
		<price>77</price>
		<language>English</language>
	</book>
</bookstore>

????我們要向第一個book節點的最后添加一個language節點:

<?xml?version="1.0"?encoding="UTF-8"?>
<bookstore>?
??<book?id="1">?
????<name>冰與火之歌</name>??
????<author>喬治馬丁</author>??
????<year>2014</year>??
????<price>89</price>??
????<language>簡體中文</language>
??</book>??
??<book?id="2">?
????<name>安徒生童話</name>??
????<year>2004</year>??
????<price>77</price>??
????<language>English</language>?
??</book>?
</bookstore>

基本思路是先解析到適當的位置再進行插入:

DOM方式:

????private?static?void?appendXMLByDOM()?throws?ParserConfigurationException,
			TransformerException,?SAXException,?IOException?{
		//?1.創建一個DocumentBuilderFactory對象
		DocumentBuilderFactory?dbf?=?DocumentBuilderFactory.newInstance();
		//?2.根據DocumentBuilderFactory對象創建一個DocumentBuilder對象
		DocumentBuilder?db?=?dbf.newDocumentBuilder();

		//?3.使用DocumentBuilder對象的parse()方法返回一個Document對象(DOM樹)
		Document?document?=?db.parse("books1.xml");
		document.setXmlStandalone(true);//?設置XML文件的聲明standalone的值為yes并不予顯示

????????????????//?4.追加節點
		Node?book?=??document.getElementsByTagName("book").item(0);//?得到第一個book節點
		Element?language?=?document.createElement("language");
		language.setTextContent("簡體中文");
		book.appendChild(language);
		
		//?5.創建一個TransformerFactory對象
		TransformerFactory?tff?=?TransformerFactory.newInstance();
		//?6.通過TransformerFactory對象創建一個Transformer對象
		Transformer?tf?=?tff.newTransformer();

		//?7.利用Transformer對象的transform方法指定輸出流
		tf.setOutputProperty(OutputKeys.INDENT,?"yes");//?設置縮進、換行
		tf.transform(new?DOMSource(document),?new?StreamResult(new?File(
				"books_append_dom.xml")));
????}

JDOM方式:

????public?static?void?appendXMLByJDOM()?{
		//?1.創建一個SAXBuilder對象
		SAXBuilder?saxBuilder?=?new?SAXBuilder();

		InputStream?in;
		try?{
			//?2.創建一個輸入流,將xml文件加載到輸入流
			in?=?new?FileInputStream("books1.xml");
			//?3.通過SAXBuilder的build方法將輸入流加載到SAXBuilder中
			Document?document?=?saxBuilder.build(in);
			//?4.通過Document對象獲取xml文件的根節點
			Element?rootElement?=?document.getRootElement();
			//?5.根據根節點獲取子節點的List集合
			List<Element>?bookList?=?rootElement.getChildren();

			//?6.追加節點
			Element?language?=?new?Element("language");
			language.setText("簡體中文");
			bookList.get(0).addContent(language);
			
			//?7.設置輸出流和輸出格式
			Format?format?=?Format.getCompactFormat();
			format.setEncoding("gb2312");//設置編碼方式為gb2312
			format.setIndent("	");//設置縮進(此處為一個tab鍵)
			XMLOutputter?outputter?=?new?XMLOutputter(format);
			outputter.output(document,?new?FileOutputStream("books_append_jdom.xml"));
		}?catch?(FileNotFoundException?e)?{
			e.printStackTrace();
		}?catch?(JDOMException?e)?{
			e.printStackTrace();
		}?catch?(IOException?e)?{
			e.printStackTrace();
		}
	}

DOM4J方式:

????public?static?void?appendXMLByDOM4J()?throws?IOException?{
		//?1.創建一個SAXReader對象reader
		SAXReader?reader?=?new?SAXReader();
		try?{
			//?2.通過reader對象的read方法加載xml文件,獲取Document對象
			Document?document?=?reader.read(new?File("books1.xml"));
			Element?bookStore?=?document.getRootElement();//?通過document對象獲取根節點bookstore

			Element?book?=?bookStore.element("book");
			Element?language?=?book.addElement("language");
			language.setText("簡體中文");
			
			//?3.設置輸出格式和輸出流
			OutputFormat?format?=?OutputFormat.createPrettyPrint();
			XMLWriter?writer?=?new?XMLWriter(new?FileOutputStream(
					"books_append_dom4j.xml"),?format);
			writer.write(document);//?將文檔寫入到輸出流
			writer.close();
			
		}?catch?(DocumentException?e)?{
			e.printStackTrace();
		}
	}

????其中DOM4J方式是最簡單的,推薦使用這種方式。

5 回復 有任何疑惑可以回復我~
#1

飛了的人 提問者

非常感謝!
2015-02-17 回復 有任何疑惑可以回復我~
#2

JessicaJiang

給你點32個贊嘻嘻~!
2015-02-27 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

xml文件已經存在如何追加內容

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號