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

一、可擴展標記語言xml:Extensible Markup Language
1、XML的作用:1)統(tǒng)一數(shù)據(jù)傳輸?shù)母袷健?)做小型數(shù)據(jù)庫[文件型數(shù)據(jù)庫]。3)做配置文件 .ini .propertity .xml .cfg
2、XML文件的基本格式:
標簽:分為雙標簽和單標簽,雙標簽的開頭和結(jié)尾標簽名必須一致,大小寫一樣,/ 開頭的是結(jié)尾標簽,單標簽必須在 > 前加上 / 來結(jié)尾,單標簽中不能放文本。
屬性:在開始標簽中定義一些名值對,值一定是字符串
3、XML文件的基本構(gòu)成:
1)在第一行是XML聲明 <?xml version="1.0" encoding="UTF-8" ?>
2)必須且只能有一對根標簽
3)標簽可以一層一層嵌
二、寫一個簡單的xml文檔stus.xml然后用Dom進行解析。
DOM : Document Object Model 文檔對象模型
DOM解析的基本思路:將整個XML文件一次性讀入內(nèi)存,將整個XML看做一棵文檔樹,XML中的每一個標簽,屬性,文本都看做是樹上的一個結(jié)點,然后可以對結(jié)點進行增刪改查的操作。
已經(jīng)編輯好的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>
三、開始解析
創(chuàng)建解析工廠
// 得到解析工廠對象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 生產(chǎn)一個解析器對象
DocumentBuilder builder = factory.newDocumentBuilder();
// 開始解析xml文件,得到的解析結(jié)果是一個Document對象,Document對象叫做文檔樹對象
Document dom = builder.parse("stus.xml");1、增加節(jié)點
基本思路:首先創(chuàng)建一個新的元素節(jié)點,將元素節(jié)點追加到根節(jié)點后面,設置其節(jié)點屬性。創(chuàng)建標簽,設置標簽文本內(nèi)容,最后將新標簽添加到新的元素節(jié)點中。
代碼:
// 創(chuàng)建一個新的元素節(jié)點
Element stu = dom.createElement("stu");
// 將元素節(jié)點追加到根節(jié)點后面
root.appendChild(stu);
// 設置節(jié)點屬性
stu.setAttribute("num", "04");
// 創(chuàng)建標簽
Element name = dom.createElement("name");
Element age = dom.createElement("age");
Element sex = dom.createElement("sex");
// 設置標簽文本內(nèi)容
name.setTextContent("趙六");
age.setTextContent("19");
sex.setTextContent("女");
// 把標簽添加到新的元素節(jié)點stu中
stu.appendChild(name);
stu.appendChild(age);
stu.appendChild(sex);2、刪除節(jié)點
基本思路:獲得要刪除的節(jié)點,然后得到節(jié)點的屬性值,與要刪除的節(jié)點的屬性值進行比較,如果該屬性值對應的節(jié)點存在則移除該節(jié)點。
代碼:
// 獲得根節(jié)點
Element root = (Element) dom.getFirstChild();
// 獲得所有stu節(jié)點
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é)點的屬性值,與要刪除的結(jié)點的屬性值進行比較,然后移除該屬性值對應的結(jié)點
String num = e.getAttribute("num");
if (num.equals("02")) {
root.removeChild(e);
break;
}
}
}3、修改節(jié)點
基本思路:獲得要修改的節(jié)點,修改其屬性值,然后獲得該節(jié)點下的標簽,修改標簽中的文本內(nèi)容。
代碼:
// 修改節(jié)點屬性
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、查找節(jié)點
基本思路:獲得所有的節(jié)點,用 需要查找的結(jié)點的屬性值與所有節(jié)點進行比較,如果該節(jié)點存在,就打印該節(jié)點的屬性值及其節(jié)點下標簽的內(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é)點,顯示其屬性值及標簽內(nèi)容
if(n.equals("03")){
System.out.println(no.getNodeName()+"\t"+n+no.getTextContent());
}
}
}4、保存修改后的xml文檔
基本思路:先將內(nèi)存中的Document對象寫到xml文件中,然后將整個Document對象作為要寫入xml文件的數(shù)據(jù)源,最后將數(shù)據(jù)源寫入目標文件。
代碼:
// 將內(nèi)存中的Document對象寫到xml文件中
TransformerFactory tf = TransformerFactory.newInstance();
Transformer former = tf.newTransformer();
former.setParameter("version", "1.0");
former.setParameter("encoding", "GBK");
// 將整個Document對象作為要寫入xml文件的數(shù)據(jù)源
DOMSource xmlSource = new DOMSource(dom);
// 要寫入的目標文件
StreamResult outputTarget = new
StreamResult(new File("F:\\stus2.xml"));
former.transform(xmlSource, outputTarget);感謝各位的閱讀!關于xml解析-增刪改查操作后將其修改結(jié)果保存的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
名稱欄目:xml解析-增刪改查操作后將其修改結(jié)果保存的方法-創(chuàng)新互聯(lián)
標題鏈接:http://chinadenli.net/article18/shcdp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設、App設計、網(wǎng)站維護、關鍵詞優(yōu)化、標簽優(yōu)化、網(wǎng)站設計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容