第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

xml文件已經(jīng)存在如何追加內(nèi)容

如何向已經(jīng)存在的xml文件中追加內(nèi)容

正在回答

1 回答

可以使用DOM、JDOM和SAX方式向一個(gè)已經(jīng)存在的XML文件中追加內(nèi)容,SAX方式比較復(fù)雜。例如:原來的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>

????我們要向第一個(gè)book節(jié)點(diǎn)的最后添加一個(gè)language節(jié)點(diǎn):

<?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>

基本思路是先解析到適當(dāng)?shù)奈恢迷龠M(jìn)行插入:

DOM方式:

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

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

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

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

JDOM方式:

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

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

			//?6.追加節(jié)點(diǎn)
			Element?language?=?new?Element("language");
			language.setText("簡體中文");
			bookList.get(0).addContent(language);
			
			//?7.設(shè)置輸出流和輸出格式
			Format?format?=?Format.getCompactFormat();
			format.setEncoding("gb2312");//設(shè)置編碼方式為gb2312
			format.setIndent("	");//設(shè)置縮進(jìn)(此處為一個(gè)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.創(chuàng)建一個(gè)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對象獲取根節(jié)點(diǎn)bookstore

			Element?book?=?bookStore.element("book");
			Element?language?=?book.addElement("language");
			language.setText("簡體中文");
			
			//?3.設(shè)置輸出格式和輸出流
			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 回復(fù) 有任何疑惑可以回復(fù)我~
#1

飛了的人 提問者

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

JessicaJiang

給你點(diǎn)32個(gè)贊嘻嘻~!
2015-02-27 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

xml文件已經(jīng)存在如何追加內(nèi)容

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號