91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-13 16:41:45 來源:億速云 閱讀:207 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關xml解析-增刪改查操作后將其修改結果保存的方法的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

一、可擴展標記語言xml:Extensible Markup Language
  1、XML的作用:1)統一數據傳輸的格式。2)做小型數據庫[文件型數據庫]。3)做配置文件  .ini   .propertity  .xml  .cfg
  2、XML文件的基本格式:
    標簽:分為雙標簽和單標簽,雙標簽的開頭和結尾標簽名必須一致,大小寫一樣,/ 開頭的是結尾標簽,單標簽必須在 > 前加上 / 來結尾,單標簽中不能放文本。
    屬性:在開始標簽中定義一些名值對,值一定是字符串
  3、XML文件的基本構成:
    1)在第一行是XML聲明    <?xml version="1.0" encoding="UTF-8"  ?>
    2)必須且只能有一對根標簽
    3)標簽可以一層一層嵌

二、寫一個簡單的xml文檔stus.xml然后用Dom進行解析。
   DOM : Document Object Model 文檔對象模型
   DOM解析的基本思路:將整個XML文件一次性讀入內存,將整個XML看做一棵文檔樹,XML中的每一個標簽,屬性,文本都看做是樹上的一個結點,然后可以對結點進行增刪改查的操作。
  已經編輯好的stus.xml文檔

<?xml version="1.0" encoding="UTF-8"?>
<stus Class="1401" >
	<stu num="01">
		<name>張三</name>
		<age>19</age>
		<sex>男</sex>
	</stu>
	<stu  num="02">
		<name>李四</name>
		<age>20</age>
		<sex>女</sex>
	</stu>
	<stu  num="03">
		<name>王五</name>
		<age>21</age>
		<sex>男</sex>
	</stu>
</stus>

三、開始解析
   創建解析工廠

// 得到解析工廠對象  
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
        // 生產一個解析器對象  
        DocumentBuilder builder = factory.newDocumentBuilder();  
        // 開始解析xml文件,得到的解析結果是一個Document對象,Document對象叫做文檔樹對象  
        Document dom = builder.parse("stus.xml");

1、增加節點
   基本思路:首先創建一個新的元素節點,將元素節點追加到根節點后面,設置其節點屬性。創建標簽,設置標簽文本內容,最后將新標簽添加到新的元素節點中。
代碼:

// 創建一個新的元素節點
		Element stu = dom.createElement("stu");
		// 將元素節點追加到根節點后面
		root.appendChild(stu);
		// 設置節點屬性
		stu.setAttribute("num", "04");
		// 創建標簽
		Element name = dom.createElement("name");
		Element age = dom.createElement("age");
		Element sex = dom.createElement("sex");
		// 設置標簽文本內容
		name.setTextContent("趙六");
		age.setTextContent("19");
		sex.setTextContent("女");
		// 把標簽添加到新的元素節點stu中
		stu.appendChild(name);
		stu.appendChild(age);
		stu.appendChild(sex);

2、刪除節點
基本思路:獲得要刪除的節點,然后得到節點的屬性值,與要刪除的節點的屬性值進行比較,如果該屬性值對應的節點存在則移除該節點。
代碼:

// 獲得根節點
		Element root = (Element) dom.getFirstChild();
		// 獲得所有stu節點
		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;
				// 得到節點的屬性值,與要刪除的結點的屬性值進行比較,然后移除該屬性值對應的結點
				String num = e.getAttribute("num");
				if (num.equals("02")) {
					root.removeChild(e);
					break;
				}
			}
		}

3、修改節點
基本思路:獲得要修改的節點,修改其屬性值,然后獲得該節點下的標簽,修改標簽中的文本內容。
代碼:

// 修改節點屬性
		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");
					// 修改標簽值
					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、查找節點
基本思路:獲得所有的節點,用 需要查找的結點的屬性值與所有節點進行比較,如果該節點存在,就打印該節點的屬性值及其節點下標簽的內容。
代碼:

		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.equals("03")){
					System.out.println(no.getNodeName()+"\t"+n+no.getTextContent());
				}
			}
		}

4、保存修改后的xml文檔
基本思路:先將內存中的Document對象寫到xml文件中,然后將整個Document對象作為要寫入xml文件的數據源,最后將數據源寫入目標文件。
代碼:

// 將內存中的Document對象寫到xml文件中
		TransformerFactory tf = TransformerFactory.newInstance();
		Transformer former = tf.newTransformer();
		former.setParameter("version", "1.0");
		former.setParameter("encoding", "GBK");
		// 將整個Document對象作為要寫入xml文件的數據源
		DOMSource xmlSource = new DOMSource(dom);
		// 要寫入的目標文件
		StreamResult outputTarget = new 
				StreamResult(new File("F:\\stus2.xml"));
		former.transform(xmlSource, outputTarget);

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

xml
AI

云阳县| 鄢陵县| 胶南市| 丹东市| 固安县| 温泉县| 桃园市| 宽甸| 黄山市| 鄂伦春自治旗| 和顺县| 尚义县| 会泽县| 永兴县| 钟山县| 来凤县| 英吉沙县| 光山县| 铁力市| 得荣县| 建阳市| 蓝田县| 衡水市| 上杭县| 宜昌市| 镇安县| 哈尔滨市| 蓬安县| 文山县| 民丰县| 阜平县| 廊坊市| 拜泉县| 稷山县| 泊头市| 甘孜| 承德县| 阿瓦提县| 师宗县| 吴江市| 色达县|