真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

xml解析-增刪改查操作后將其修改結(jié)果保存的方法

這篇文章給大家分享的是有關(guān)xml解析-增刪改查操作后將其修改結(jié)果保存的方法的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

創(chuàng)新互聯(lián)公司服務(wù)緊隨時(shí)代發(fā)展步伐,進(jìn)行技術(shù)革新和技術(shù)進(jìn)步,經(jīng)過(guò)十載的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計(jì)師、專(zhuān)業(yè)的網(wǎng)站實(shí)施團(tuán)隊(duì)以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶(hù)要求對(duì)網(wǎng)站進(jìn)行成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、建設(shè)、維護(hù)、更新和改版,實(shí)現(xiàn)客戶(hù)網(wǎng)站對(duì)外宣傳展示的首要目的,并為客戶(hù)企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。

一、可擴(kuò)展標(biāo)記語(yǔ)言xml:Extensible Markup Language
  1、XML的作用:1)統(tǒng)一數(shù)據(jù)傳輸?shù)母袷健?)做小型數(shù)據(jù)庫(kù)[文件型數(shù)據(jù)庫(kù)]。3)做配置文件  .ini   .propertity  .xml  .cfg
  2、XML文件的基本格式:
    標(biāo)簽:分為雙標(biāo)簽和單標(biāo)簽,雙標(biāo)簽的開(kāi)頭和結(jié)尾標(biāo)簽名必須一致,大小寫(xiě)一樣,/ 開(kāi)頭的是結(jié)尾標(biāo)簽,單標(biāo)簽必須在 > 前加上 / 來(lái)結(jié)尾,單標(biāo)簽中不能放文本。
    屬性:在開(kāi)始標(biāo)簽中定義一些名值對(duì),值一定是字符串
  3、XML文件的基本構(gòu)成:
    1)在第一行是XML聲明    
    2)必須且只能有一對(duì)根標(biāo)簽
    3)標(biāo)簽可以一層一層嵌

二、寫(xiě)一個(gè)簡(jiǎn)單的xml文檔stus.xml然后用Dom進(jìn)行解析。
   DOM : Document Object Model 文檔對(duì)象模型
   DOM解析的基本思路:將整個(gè)XML文件一次性讀入內(nèi)存,將整個(gè)XML看做一棵文檔樹(shù),XML中的每一個(gè)標(biāo)簽,屬性,文本都看做是樹(shù)上的一個(gè)結(jié)點(diǎn),然后可以對(duì)結(jié)點(diǎn)進(jìn)行增刪改查的操作。
  已經(jīng)編輯好的stus.xml文檔



	
		張三
		19
		
	
	
		李四
		20
		
	
	
		王五
		21
		
	

三、開(kāi)始解析
   創(chuàng)建解析工廠

// 得到解析工廠對(duì)象  
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
        // 生產(chǎn)一個(gè)解析器對(duì)象  
        DocumentBuilder builder = factory.newDocumentBuilder();  
        // 開(kāi)始解析xml文件,得到的解析結(jié)果是一個(gè)Document對(duì)象,Document對(duì)象叫做文檔樹(shù)對(duì)象  
        Document dom = builder.parse("stus.xml");

1、增加節(jié)點(diǎn)
   基本思路:首先創(chuàng)建一個(gè)新的元素節(jié)點(diǎn),將元素節(jié)點(diǎn)追加到根節(jié)點(diǎn)后面,設(shè)置其節(jié)點(diǎn)屬性。創(chuàng)建標(biāo)簽,設(shè)置標(biāo)簽文本內(nèi)容,最后將新標(biāo)簽添加到新的元素節(jié)點(diǎn)中。
代碼:

// 創(chuàng)建一個(gè)新的元素節(jié)點(diǎn)
		Element stu = dom.createElement("stu");
		// 將元素節(jié)點(diǎn)追加到根節(jié)點(diǎn)后面
		root.appendChild(stu);
		// 設(shè)置節(jié)點(diǎn)屬性
		stu.setAttribute("num", "04");
		// 創(chuàng)建標(biāo)簽
		Element name = dom.createElement("name");
		Element age = dom.createElement("age");
		Element sex = dom.createElement("sex");
		// 設(shè)置標(biāo)簽文本內(nèi)容
		name.setTextContent("趙六");
		age.setTextContent("19");
		sex.setTextContent("女");
		// 把標(biāo)簽添加到新的元素節(jié)點(diǎn)stu中
		stu.appendChild(name);
		stu.appendChild(age);
		stu.appendChild(sex);

2、刪除節(jié)點(diǎn)
基本思路:獲得要?jiǎng)h除的節(jié)點(diǎn),然后得到節(jié)點(diǎn)的屬性值,與要?jiǎng)h除的節(jié)點(diǎn)的屬性值進(jìn)行比較,如果該屬性值對(duì)應(yīng)的節(jié)點(diǎn)存在則移除該節(jié)點(diǎn)。
代碼:

// 獲得根節(jié)點(diǎn)
		Element root = (Element) dom.getFirstChild();
		// 獲得所有stu節(jié)點(diǎn)
		NodeList list = dom.getElementsByTagName("stu");
		for (int i = 0; i < list.getLength(); i++) {
			Node node = list.item(i);
			if (node instanceof Element) {
				Element e = (Element) node;
				// 得到節(jié)點(diǎn)的屬性值,與要?jiǎng)h除的結(jié)點(diǎn)的屬性值進(jìn)行比較,然后移除該屬性值對(duì)應(yīng)的結(jié)點(diǎn)
				String num = e.getAttribute("num");
				if (num.equals("02")) {
					root.removeChild(e);
					break;
				}
			}
		}

3、修改節(jié)點(diǎn)
基本思路:獲得要修改的節(jié)點(diǎn),修改其屬性值,然后獲得該節(jié)點(diǎn)下的標(biāo)簽,修改標(biāo)簽中的文本內(nèi)容。
代碼:

// 修改節(jié)點(diǎn)屬性
		for (int j = 0; j < list.getLength(); j++) {
			Node no = list.item(j);
			if (no instanceof Element) {
				Element el = (Element) no;
				String n = el.getAttribute("num");
				if (n.contains("01")) {
					el.setAttribute("num", "05");
					// 修改標(biāo)簽值
					NodeList li = el.getChildNodes();
					for (int x = 0; x < li.getLength(); x++) {
						Node d = li.item(x);
						if (d instanceof Element) {
							Element ee = (Element) d;
							String noN = ee.getNodeName();
							if (noN.equals("name")) {
								ee.setTextContent("小白");
							} else if (noN.equals("age")) {
								ee.setTextContent("11");
							} else if (noN.equals("sex")) {
								ee.setTextContent("男");
							}
						}
					}
				}

4、查找節(jié)點(diǎn)
基本思路:獲得所有的節(jié)點(diǎn),用 需要查找的結(jié)點(diǎn)的屬性值與所有節(jié)點(diǎn)進(jìn)行比較,如果該節(jié)點(diǎn)存在,就打印該節(jié)點(diǎn)的屬性值及其節(jié)點(diǎn)下標(biāo)簽的內(nèi)容。
代碼:

		for (int j = 0; j < list.getLength(); j++) {
			Node no = list.item(j);
			if (no instanceof Element) {
				Element el = (Element) no;
				String n = el.getAttribute("num");
				//查找節(jié)點(diǎn),顯示其屬性值及標(biāo)簽內(nèi)容
				if(n.equals("03")){
					System.out.println(no.getNodeName()+"\t"+n+no.getTextContent());
				}
			}
		}

4、保存修改后的xml文檔
基本思路:先將內(nèi)存中的Document對(duì)象寫(xiě)到xml文件中,然后將整個(gè)Document對(duì)象作為要寫(xiě)入xml文件的數(shù)據(jù)源,最后將數(shù)據(jù)源寫(xiě)入目標(biāo)文件。
代碼:

// 將內(nèi)存中的Document對(duì)象寫(xiě)到xml文件中
		TransformerFactory tf = TransformerFactory.newInstance();
		Transformer former = tf.newTransformer();
		former.setParameter("version", "1.0");
		former.setParameter("encoding", "GBK");
		// 將整個(gè)Document對(duì)象作為要寫(xiě)入xml文件的數(shù)據(jù)源
		DOMSource xmlSource = new DOMSource(dom);
		// 要寫(xiě)入的目標(biāo)文件
		StreamResult outputTarget = new 
				StreamResult(new File("F:\\stus2.xml"));
		former.transform(xmlSource, outputTarget);

感謝各位的閱讀!關(guān)于xml解析-增刪改查操作后將其修改結(jié)果保存的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


本文題目:xml解析-增刪改查操作后將其修改結(jié)果保存的方法
分享網(wǎng)址:http://weahome.cn/article/pcehpj.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部