搜尋
首頁後端開發XML/RSS教程java對XML檔案的解析、節點的增加、刪除操作總結

1、java程式碼: 
主要採用dom進行操作 

package test; 
import java.io.IOException; 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerConfigurationException; 
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.NodeList; 
import org.w3c.dom.Text; 
import org.xml.sax.SAXException; 
public class XmlOprate { 
Document doc; 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder; 
NodeList imags; 
String path; 
public NodeList getImags() { 
return imags; 
} 
public void setImags(NodeList imags) { 
this.imags = imags; 
} 
/** 
* 构造方法 
* @param path:xml文件的路径 
* @param nodes:要解析的xml节点名称 
*/ 
public XmlOprate(String path) { 
super(); 
this.path = path; 
System.out.println(System.getProperty("user.dir")); 
} 
/** 
* 解析XML 
* @param path 
*/ 
public void readXml(){ 
try { 
builder = factory.newDocumentBuilder(); 
Document doc=builder.parse(path); 
doc.normalize(); 
NodeList imags =doc.getElementsByTagName("imags"); 
this.setImags(imags); 
for (int i=0;i<imags.getLength();i++){ 
Element link=(Element) imags.item(i); 
System.out.print("title: "); 
System.out.println(link.getElementsByTagName("title").item(0).getFirstChild().getNodeValue()); 
System.out.print("URL: "); 
System.out.println(link.getElementsByTagName("url").item(0).getFirstChild().getNodeValue()); 
System.out.print("imgsrc: "); 
System.out.println(link.getElementsByTagName("imgsrc").item(0).getFirstChild().getNodeValue()); 
System.out.println(); 
} 
}catch (ParserConfigurationException e) { 
e.printStackTrace(); 
} catch (SAXException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
} 
} 
/** 
* addCode 
* @param path 
*/ 
public void addXmlCode(String imgsrc,String title,String url){ 
try { 
builder = factory.newDocumentBuilder(); 
Document doc=builder.parse(path); 
doc.normalize(); 
Text textseg; 
Element imag=doc.createElement("imags"); 
Element linkimgsrc=doc.createElement("imgsrc"); 
textseg=doc.createTextNode(imgsrc); 
linkimgsrc.appendChild(textseg); 
imag.appendChild(linkimgsrc); 
Element linktitle=doc.createElement("title"); 
textseg=doc.createTextNode(title); 
linktitle.appendChild(textseg); 
imag.appendChild(linktitle); 
Element linkurl=doc.createElement("url"); 
textseg=doc.createTextNode(url); 
linkurl.appendChild(textseg); 
imag.appendChild(linkurl); 
doc.getDocumentElement().appendChild(imag); 
TransformerFactory tFactory =TransformerFactory.newInstance(); 
Transformer transformer; 
transformer = tFactory.newTransformer(); 
DOMSource source = new DOMSource(doc); 
StreamResult result = new StreamResult(new java.io.File(path)); 
transformer.transform(source, result); 
}catch(Exception e){ 
} 
} 
/** 
* delete xml code 
* @param path 
*/ 
public void delXmlCode(){ 
try { 
builder = factory.newDocumentBuilder(); 
doc=builder.parse(path); 
doc.normalize(); 
NodeList imags =doc.getElementsByTagName("imags"); 
Element elink=(Element) imags.item(0); 
elink.removeChild(elink.getElementsByTagName("imgsrc").item(0)); 
elink.removeChild(elink.getElementsByTagName("title").item(0)); 
elink.removeChild(elink.getElementsByTagName("url").item(0)); 
doc.getFirstChild().removeChild(elink); 
TransformerFactory tFactory =TransformerFactory.newInstance(); 
Transformer transformer = tFactory.newTransformer(); 
DOMSource source = new DOMSource(doc); 
StreamResult result = new StreamResult(new java.io.File(path)); 
transformer.transform(source, result); 
} catch (ParserConfigurationException e) { 
e.printStackTrace(); 
} catch (SAXException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
} catch (TransformerConfigurationException e) { 
e.printStackTrace(); 
} catch (TransformerException e) { 
e.printStackTrace(); 
} 
} 
}

2、xml部分 

<?xml version="1.0" encoding="UTF-8" ?> 
<root> 
<imags> 
<img src alt="java對XML檔案的解析、節點的增加、刪除操作總結" >images/ad-01.jpg</imgsrc> 
<title>胡志明市</title> 
<url>http://torchrelay.beijing2008.cn/cn/journey/hochiminhcity/</url> 
</imags> 
<imags> 
<img src alt="java對XML檔案的解析、節點的增加、刪除操作總結" >images/ad-02.jpg</imgsrc> 
<title>香港2</title> 
<url>http://torchrelay.beijing2008.cn/cn/journey/hongkong/</url> 
</imags> 
</root>

3、總結: 
看對xml操作的三種方法(讀、寫、刪),他們的初始化語句都相同: 

builder = factory.newDocumentBuilder(); 
Document doc=builder.parse(path); 
doc.normalize();

開始我打算把這部分相同的部分拿出來寫在構造方法中,但是在測試中發現,這樣總是會報空指針的錯誤(搞了我好久); 
而只是把 

builder = factory.newDocumentBuilder();


放到builder的初始化語句中的時候,讀沒問題,但是當寫或刪的時候也會報錯; 
所以就寫成現在這樣了,感覺有點亂亂的,但也沒想到什麼好的方法,就先貼到這裡了,以後可能會用得著

更多java對XML檔案的解析、節點的增加、刪除操作總結相關文章請關注PHP中文網!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何使用RSS feed進行新聞匯總和內容策劃?如何使用RSS feed進行新聞匯總和內容策劃?Mar 10, 2025 pm 03:47 PM

本文解釋瞭如何使用RSS feed進行有效的新聞匯總和內容策劃。 它詳細介紹了使用RSS讀取器(例如Feedly和Inoreader),組織供稿以及為目標內容的利用功能的訂閱供稿。 利益

手機XML轉PDF,轉換速度快嗎?手機XML轉PDF,轉換速度快嗎?Apr 02, 2025 pm 10:09 PM

手機XML轉PDF的速度取決於以下因素:XML結構的複雜性手機硬件配置轉換方法(庫、算法)代碼質量優化手段(選擇高效庫、優化算法、緩存數據、利用多線程)總體而言,沒有絕對的答案,需要根據具體情況進行優化。

如何將ATOM發布協議用於Web內容管理?如何將ATOM發布協議用於Web內容管理?Mar 10, 2025 pm 05:48 PM

本文解釋了用於Web內容管理的原子出版協議(ATOMPUB)。 它使用HTTP方法(獲取,發布,PUT,刪除)詳細介紹了用於內容創建,檢索,更新和刪除的原子格式。 本文還討論了Atompub

如何使用RSS實施內容聯合?如何使用RSS實施內容聯合?Mar 10, 2025 pm 03:41 PM

本文詳細介紹了使用RSS提要實施內容聯合的內容。 它涵蓋創建RSS提要,識別目標網站,提交提要以及監視效率。 諸如有限控制和豐富媒體支持之類的挑戰也是鐵餅

如何保護RSS提要,以防止未經授權的訪問?如何保護RSS提要,以防止未經授權的訪問?Mar 10, 2025 pm 03:42 PM

本文詳細介紹了針對未經授權訪問的RSS供給。 它檢查了各種方法,包括HTTP身份驗證,具有速率限制的API密鑰,HTTPS和內容混淆(灰心)。 最佳實踐涉及IP限制,轉換

如何集成XML和語義Web技術?如何集成XML和語義Web技術?Mar 10, 2025 pm 05:50 PM

本文探討了集成XML和語義網絡技術。 核心問題是將XML的結構化數據映射到RDF三元組,以進行語義互操作性。 最佳實踐涉及本體定義,戰略映射方法,仔細的ATT

怎麼在手機上把XML文件轉換為PDF?怎麼在手機上把XML文件轉換為PDF?Apr 02, 2025 pm 10:12 PM

不可能直接在手機上用單一應用完成 XML 到 PDF 的轉換。需要使用雲端服務,通過兩步走的方式實現:1. 在雲端轉換 XML 為 PDF,2. 在手機端訪問或下載轉換後的 PDF 文件。

如何將XML用於醫療保健/財務/等的數據互操作性?如何將XML用於醫療保健/財務/等的數據互操作性?Mar 10, 2025 pm 05:50 PM

本文使用XML詳細介紹了數據互操作性,重點是醫療保健和金融。 它涵蓋了模式定義,XML文檔創建,數據轉換,解析和交換機制。鑰匙XML標準(HL7,DICOM,FinML,ISO 20022)

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),