在java中使用dom解析xml的示例分析
dom是個(gè)功能強(qiáng)大的解析工具,適用于小文檔
為什么這么說呢?因?yàn)樗鼤?huì)把整篇xml文檔裝載進(jìn)內(nèi)存中,形成一顆文檔對(duì)象樹
總之聽起來怪嚇人的,不過使用它來讀取點(diǎn)小東西相對(duì)Sax而言還是挺方便的
至于它的增刪操作等,我是不打算寫了,在我看教程的時(shí)候我就差點(diǎn)被那代碼給丑到吐了
也正因?yàn)槿绱耍庞泻髞砟切﹋dom和dom4j等工具的存在……
不多說,直接上代碼
Dom解析示例
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Demo {
public static void main(String[] args) throws Exception {
//創(chuàng)建解析器工廠實(shí)例,并生成解析器
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
//創(chuàng)建需要解析的文檔對(duì)象
File f = new File("books.xml");
//解析文檔,并返回一個(gè)Document對(duì)象,此時(shí)xml文檔已加載到內(nèi)存中
//好吧,讓解析來得更猛烈些吧,其余的事就是獲取數(shù)據(jù)了
Document doc = builder.parse(f);
//獲取文檔根元素
//你問我為什么這么做?因?yàn)槲臋n對(duì)象本身就是樹形結(jié)構(gòu),這里就是樹根
//當(dāng)然,你也可以直接找到元素集合,省略此步驟
Element root = doc.getDocumentElement();
//上面找到了根節(jié)點(diǎn),這里開始獲取根節(jié)點(diǎn)下的元素集合
NodeList list = root.getElementsByTagName("book");
for (int i = 0; i < list.getLength(); i++) {
//通過item()方法找到集合中的節(jié)點(diǎn),并向下轉(zhuǎn)型為Element對(duì)象
Element n = (Element) list.item(i);
//獲取對(duì)象中的屬性map,用for循環(huán)提取并打印
NamedNodeMap node = n.getAttributes();
for (int x = 0; x < node.getLength(); x++) {
Node nn = node.item(x);
System.out.println(nn.getNodeName() + ": " + nn.getNodeValue());
}
//打印元素內(nèi)容,代碼很糾結(jié),差不多是個(gè)固定格式
System.out.println("title: " +n.getElementsByTagName("title").item(0).getFirstChild().getNodeValue());
System.out.println("author: " + n.getElementsByTagName("author").item(0).getFirstChild().getNodeValue());
System.out.println();
}
}
}
輸出結(jié)果:
- 在java中使用dom4j解析xml(示例代碼)
- java 使用JDOM解析xml文件
- Java中對(duì)XML的解析詳解
- java中使用sax解析xml的解決方法
- Java下3中XML解析 DOM方式、SAX方式和StAX方式
- Java解析XML的四種方法詳解
- Javascript(AJAX)解析XML的代碼(兼容FIREFOX/IE)
- java對(duì)XML文件的解析、節(jié)點(diǎn)的增加、刪除操作總結(jié)
- xml 封裝與解析(javascript和C#中)
- javascript 解析后的xml對(duì)象的讀取方法細(xì)解
- JavaScript 解析讀取XML文檔 實(shí)例代碼
- javascript解析xml字符串的函數(shù)
- Java中四種XML解析技術(shù)
- java解析xml常用的幾種方式總結(jié)
相關(guān)文章
詳解Guava Cache本地緩存在Spring Boot應(yīng)用中的實(shí)踐
Guava Cache是一個(gè)全內(nèi)存的本地緩存實(shí)現(xiàn),本文將講述如何將 Guava Cache緩存應(yīng)用到 Spring Boot應(yīng)用中。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01java數(shù)學(xué)工具類Math詳解(round方法)
這篇文章主要為大家詳細(xì)介紹了java數(shù)學(xué)工具類Math,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08Java實(shí)現(xiàn)的模糊匹配某文件夾下的文件并刪除功能示例
這篇文章主要介紹了Java實(shí)現(xiàn)的模糊匹配某文件夾下的文件并刪除功能,涉及java針對(duì)目錄與文件的遍歷、匹配、判斷、刪除等相關(guān)操作技巧,需要的朋友可以參考下2018-02-02SpringSecurity整合springBoot、redis實(shí)現(xiàn)登錄互踢功能
這篇文章主要介紹了SpringSecurity整合springBoot、redis實(shí)現(xiàn)登錄互踢,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05Netty + ZooKeeper 實(shí)現(xiàn)簡單的服務(wù)注冊(cè)與發(fā)現(xiàn)
服務(wù)注冊(cè)和發(fā)現(xiàn)一直是分布式的核心組件。本文介紹了借助 ZooKeeper 做注冊(cè)中心,如何實(shí)現(xiàn)一個(gè)簡單的服務(wù)注冊(cè)和發(fā)現(xiàn)。,需要的朋友可以參考下2019-06-06實(shí)現(xiàn)quartz定時(shí)器及quartz定時(shí)器原理介紹
Quartz是一個(gè)大名鼎鼎的Java版開源定時(shí)調(diào)度器,功能強(qiáng)悍,使用方便,下面我們看看如何使用它2013-12-12java 實(shí)現(xiàn)將Object類型轉(zhuǎn)換為int類型
這篇文章主要介紹了java 實(shí)現(xiàn)將Object類型轉(zhuǎn)換為int類型的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07