欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在java中使用dom解析xml的示例分析

 更新時(shí)間:2013年05月03日 19:28:55   作者:  
本篇文章介紹了,在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解析示例

復(fù)制代碼 代碼如下:

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é)果:

相關(guān)文章

  • Spring 4.1+JSONP的使用指南

    Spring 4.1+JSONP的使用指南

    在解釋JSONP之前,我們需要了解下”同源策略“,這對(duì)理解跨域有幫助?;诎踩脑?瀏覽器是存在同源策略機(jī)制的,同源策略阻止從一個(gè)源加載的文檔或腳本獲取或設(shè)置另一個(gè)源加載額文檔的屬性。說的簡單點(diǎn)就是瀏覽器限制腳本只能和同協(xié)議、同域名、同端口的腳本進(jìn)行交互。
    2016-04-04
  • 詳解Guava Cache本地緩存在Spring Boot應(yīng)用中的實(shí)踐

    詳解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-01
  • java數(shù)學(xué)工具類Math詳解(round方法)

    java數(shù)學(xué)工具類Math詳解(round方法)

    這篇文章主要為大家詳細(xì)介紹了java數(shù)學(xué)工具類Math,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Java實(shí)現(xiàn)的模糊匹配某文件夾下的文件并刪除功能示例

    Java實(shí)現(xiàn)的模糊匹配某文件夾下的文件并刪除功能示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的模糊匹配某文件夾下的文件并刪除功能,涉及java針對(duì)目錄與文件的遍歷、匹配、判斷、刪除等相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • SpringSecurity整合springBoot、redis實(shí)現(xiàn)登錄互踢功能

    SpringSecurity整合springBoot、redis實(shí)現(xiàn)登錄互踢功能

    這篇文章主要介紹了SpringSecurity整合springBoot、redis實(shí)現(xiàn)登錄互踢,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • Netty + ZooKeeper 實(shí)現(xiàn)簡單的服務(wù)注冊(cè)與發(fā)現(xiàn)

    Netty + 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
  • IDEA教程之Activiti插件圖文詳解

    IDEA教程之Activiti插件圖文詳解

    這篇文章主要介紹了IDEA教程之Activiti插件圖文詳解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 實(shí)現(xiàn)quartz定時(shí)器及quartz定時(shí)器原理介紹

    實(shí)現(xiàn)quartz定時(shí)器及quartz定時(shí)器原理介紹

    Quartz是一個(gè)大名鼎鼎的Java版開源定時(shí)調(diào)度器,功能強(qiáng)悍,使用方便,下面我們看看如何使用它
    2013-12-12
  • 解決SpringBoot跨域的三種方式

    解決SpringBoot跨域的三種方式

    前后端分離是目前的趨勢(shì),解決跨域問題也是老生常談的話題了,我們了解一下什么是域和跨域。域:協(xié)議 + 域名 + 端口;三者完全相同則為同域,反之有其一不同均為不同域??缬蛘?qǐng)求:當(dāng)前【發(fā)起請(qǐng)求】的域和【請(qǐng)求指向】的域?qū)儆诓煌驎r(shí),該次請(qǐng)求稱之為跨域請(qǐng)求
    2021-06-06
  • java 實(shí)現(xiàn)將Object類型轉(zhuǎn)換為int類型

    java 實(shí)現(xiàn)將Object類型轉(zhuǎn)換為int類型

    這篇文章主要介紹了java 實(shí)現(xiàn)將Object類型轉(zhuǎn)換為int類型的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評(píng)論