国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

使用DOM進行xml文檔的crud(增刪改查)操作<操作詳解>

2019-11-14 22:05:05
字體:
來源:轉載
供稿:網友
使用DOM進行xml文檔的crud(增刪改查)操作<操作詳解>

很多朋友對DOM有感冒,這里我花了一些時間寫了一個小小的教程,這個能看懂,會操作了,我相信基于DOM的其它API(如JDOM,DOM4J等)一般不會有什么問題。

后附java代碼,也可以下載(可點擊這里入下載)導入到Eclipse或MyEclipse。

image

Node和Element的關系
  1. Element是Node的子接口,所以Element的方法要比Node方法要多,這樣的話使用起來比較方便,一般情況我們都把節點轉換成元素(或者叫標簽,即Element);

    image

  2. Element是Node的子類型:

比如我們運行實例中的readByNode(Node node)方法,如果把類型斷碼if (node.getNodeType()==node.ELEMENT_NODE)注釋掉,你會發現會輸出以下內容:

節點名:#document節點類型:9節點值:null節點名:students節點類型:1節點值:null節點名:#text節點類型:3節點值:節點名:student節點類型:1節點值:null節點名:#text節點類型:3節點值:------部分控制臺內容已省略------

輸出內容包括文本類型(DOM會把空格也當做類型)和document類型及元素類型,如果只查找Element類型,可以使用判斷Node類型,這個我們一定要注意!

我們從結果可以看出來 Element實際上是”<>”內的值。

節點類型常量字段值可對照Java API文檔的Node”常量字段值“查看:

image

修改xml后需要使用Transformer更新到xml文件中

因為DOM修改是在內存中修改,要更新到xml文件中,必須使用Transformer寫入。除讀以外,其它的增、刪、改這些更新數據的操作必須Transformer更新到xml文件。

什么時候使用item(0)?

當我們使用通過getElementsByTagName得到的是子元素的集合,如果這個子元素集合中只有一個元素時我們可以使用item(0),當然我們指定item(0),因為item(0)是第一個元素集合中的第一個元素。

如何刪除節點?

首先要獲得要刪除的節點,然后再得到其父節點,再使用父節點的removeChild方法刪除要刪除節點,所以刪除是不能“自殺”大笑

如何創建節點?

首先使用DOM的createElement方法創建各個元素,然后通過appendChild方法讓各個之間建立父子關系,這個關系不一定要從根節點開始,要看你如何增加,是否準確的找到插入位置就可以了。

-----------------------------------以下為xml代碼-----------------------------------

<?xml version="1.0" encoding="utf-8" ?><students><student id="001" sex="男"><name>周星馳</name><age>23</age><intro>這是一位成績很好的學生</intro></student><student id="002" sex="男"><name>劉德華</name><age>32</age><intro>他綜合能力很優秀</intro></student><student id="003" sex="女"><name>周惠敏</name><age>31</age><intro>長得漂亮</intro></student><student id="004" sex="男"><name>王五</name><age>37</age><intro>成績有點差</intro></student><student id="005" sex="男"><name>張三豐</name><age>26</age><intro>經常逃課</intro></student></students>

-----------------------------------以下為java代碼-----------------------------------

package com.xmltest;import java.io.File;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;// 注意不要導錯包了import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;/**     * <b>項目:</b>使用DOM進行xml文檔的crud(增刪改查)操作<br /> * <b>文件名:</b> Xml_Crud.java<br /> * <b>類名:</b> Xml_Crud<br />  * <b>包:</b> com.xmltest<br />  * <b>描述:</b> 一個xml簡單的crud操作<br />    * <hr /> * <div align="left"><font color="#FF0000"><strong>xml的crud增刪改查操作</strong></font></div> * <hr /> * <b>時間:</b> 2014-12-1 上午9:45:45<br />  * <b>Copyright:</b> 2014<br /> * @author  javalittleman * @version V1.0 */public class Xml_Crud {public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, TransformerException {File file = new File("src/student.xml");Document doc=doc(file);// 以下為【增/刪/改/查】操作// 【查】一:通過node遍歷// readByNode(doc);// 【查】二:通過傳入第幾個學生獲得該學生下的所有信息// read(doc, 1);/* 【查】三: * 通過傳入的學生姓名獲得該學生的所有信息 * 傳入的為name元素的文本值 */// read(doc,"劉德華");// 【刪】一:通過序號刪除// delete(doc, 1);// 【刪】二:通過學生姓名刪除// delete(doc, "張三豐");// 【增】:向xml中增加一個學生// creat(doc, "趙五", "男", "007", "21", "成績一般,上課不太專心");// 【改】一:根據student的id屬性修改xml文件 updata(doc, "003", "周小明");}public static void readByNode(Node node){// 遍歷時會把所有的text節點都輸出// 加上node.getNodeType()==node.ELEMENT_NODE可輸出元素節點 if (node.getNodeType()==node.ELEMENT_NODE) {System.out.

轉載請注意出處或作者,謝謝!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴塘县| 七台河市| 禹城市| 永城市| 平顶山市| 广汉市| 余姚市| 永和县| 搜索| 五家渠市| 原平市| 高阳县| 皮山县| 葫芦岛市| 上犹县| 凤翔县| 溧水县| 麻阳| 五指山市| 荣昌县| 航空| 龙江县| 富宁县| 保德县| 武宣县| 梓潼县| 四川省| 永嘉县| 东辽县| 江津市| 固镇县| 宁阳县| 蕉岭县| 闻喜县| 宁南县| 东乡族自治县| 青川县| 理塘县| 兴安县| 临朐县| 汪清县|