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

Java實(shí)現(xiàn)解析并生成xml原理實(shí)例詳解

 更新時(shí)間:2020年06月10日 11:34:27   作者:htj10  
這篇文章主要介紹了Java實(shí)現(xiàn)解析并生成xml原理實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

XML解析:

  • * 解析xml可以做:
  • * 如果xml作為配置文件:讀取
  • * 如果xml作為傳輸文件:寫,讀

xml解析思想:

  • * DOM:將文檔加載進(jìn)內(nèi)存,形成一顆dom樹(document對象),將文檔的各個(gè)組成部分封裝為一些對象。
  • * 優(yōu)點(diǎn):因?yàn)?,在?nèi)存中會(huì)形成dom樹,可以對dom樹進(jìn)行增刪改查。
  • * 缺點(diǎn):dom樹非常占內(nèi)存,解析速度慢。

Document
Element
Text
Attribute
Comment

* SAX:逐行讀取,基于事件驅(qū)動(dòng)
* 優(yōu)點(diǎn):不占內(nèi)存,速度快
* 缺點(diǎn):只能讀取,不能回寫

xml常用的解析器:

  • * JAXP:sun公司提供的解析。支持dom和sax。(不常用)
  • * JDOM:
  • * DOM4J:dom for java民間方式,但是是事實(shí)方式。非常好。 支持dom

1.導(dǎo)入jar包 dom4j.jar

2.創(chuàng)建解析器

SAXReader reader = new SAXReader();

3.解析xml 獲得document對象

Document document = reader.read(url);

  • * XPATH:專門用于查詢
  • * 定義了一種規(guī)則。
  • * 使用的方法:
  • * selectSingleNode():
  • * selectNodes():

使用步驟:

1、注意:要導(dǎo)包 jaxen...jar

2、創(chuàng)建解析器

SAXReader reader = new SAXReader();

3、解析xml 獲得document對象

Document document = reader.read(url);

* 解析XML:

// 1、得到某個(gè)具體的節(jié)點(diǎn)內(nèi)容:第2本書的書名--》葵花寶典

// 2、遍歷所有元素節(jié)點(diǎn)

XPath:

  • // nodename 選取此節(jié)點(diǎn)。
  • // / 從根節(jié)點(diǎn)選取。
  • // // 從匹配選擇的當(dāng)前節(jié)點(diǎn)選擇文檔中的節(jié)點(diǎn),而不考慮它們的位置。
  • // .. 選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)。
  • // @ 選取屬性。
  • // [@屬性名] 屬性過濾
  • // [標(biāo)簽名] 子元素過濾

例子:

/* demo.xml
<?xml version="1.0" encoding="UTF-8"?>
<books>
  <book name="Harry Potter">
    <author>J.K. Rowling</author>
    <price>29.90$</price>
  </book>
  <book name="冰與火之歌">
    <author>馬丁</author>
    <price>28.90$</price>
  </book>
</books>
*/
@Test
public void test1() throws DocumentException{
  SAXReader reader = new SAXReader();
  Document doc = reader.read("./src/demo.xml");
  Element root = doc.getRootElement();
  Element book1 = root.element("book");
  System.out.println(book1.getPath());
  System.out.println(book1.elementText("price"));
  List<?> list = root.elements("book");
  Element book2 = (Element) list.get(1);
  System.out.println(book2.attributeValue("name"));
  for(Iterator<?> it = book1.elementIterator();it.hasNext() ; ){
    Element ele = (Element) it.next();
    System.out.println(ele.getName()+" : "+ele.getText());
  }
}

@Test 
public void test2() throws Exception{//使用 XPath,只用于快速查詢,需要用jaxen...jar包
  SAXReader reader = new SAXReader();
  Document doc = reader.read(new File("src/demo.xml"));
  Node node = doc.selectSingleNode("/books/book[2]/author");//需要jaxen.jar包
  String s = node.getText();
  System.out.println(s);
  node = doc.selectSingleNode("/books/book[2]/@name");
  s = node.getText();
  System.out.println(s);
  
  List<Node> booknames = doc.selectNodes("/books//@name");
  for (Node node1 : booknames) {
    System.out.println(node1.getText());
  }
  
  List<?> nodes = doc.selectNodes("/books/*/*");
  for (int i=0; i<nodes.size(); ++i){
    Node node1 = (Node) nodes.get(i);
    System.out.println(node1.getName() + ": " + node1.getText());
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Security注冊過濾器注意事項(xiàng)詳解

    Spring Security注冊過濾器注意事項(xiàng)詳解

    前兩天和小伙伴聊了 Spring Security+JWT 實(shí)現(xiàn)無狀態(tài)登錄,然后有小伙伴反饋了一個(gè)問題,感覺這是一個(gè)我們平時(shí)寫代碼容易忽略的問題,所以本文給大家介紹了Spring Security注冊過濾器注意事項(xiàng),需要的朋友可以參考下
    2024-06-06
  • Java讀取圖片EXIF信息的方法

    Java讀取圖片EXIF信息的方法

    這篇文章主要介紹了Java讀取圖片EXIF信息的方法,較為詳細(xì)的分析了圖片EXIF信息的概念、功能及java讀取EXIF信息的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-07-07
  • RabbitMQ消息拒絕如何解決

    RabbitMQ消息拒絕如何解決

    這篇文章主要介紹了RabbitMQ消息拒絕如何解決問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java 排序算法之快速排序

    java 排序算法之快速排序

    這篇文章主要介紹了java 排序算法之快速排序,文中通過圖片和代碼講解相關(guān)知識非常詳細(xì),大家如果有需要的話可以參考一下這篇文章
    2021-09-09
  • Java分布式鎖由淺入深介紹

    Java分布式鎖由淺入深介紹

    這篇文章主要介紹了Java分布式鎖,數(shù)據(jù)庫實(shí)現(xiàn)分布式鎖方式比較多,如悲觀鎖(查詢時(shí)增加for?update)、樂觀鎖(通過version字段)、增加一個(gè)表記錄鎖信息等。因?yàn)橐蕾囉跀?shù)據(jù)庫,比較好理解,但是也存在一些問題
    2023-03-03
  • idea2019版與maven3.6.2版本不兼容的解決方法

    idea2019版與maven3.6.2版本不兼容的解決方法

    這篇文章主要介紹了idea2019版與maven3.6.2版本不兼容的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 詳解spring boot mybatis全注解化

    詳解spring boot mybatis全注解化

    這篇文章主要介紹了spring boot mybatis全注解化的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • springBoot的日志文件詳解

    springBoot的日志文件詳解

    日志是程序的重要組成部分,主要可以用來定位和排查問題,在程序中進(jìn)行自定義日志輸出的時(shí)候,也通常是借助于SLF4J框架來輸出日志,本文給大家分享springBoot的日志文件相關(guān)知識,感興趣的朋友一起看看吧
    2024-06-06
  • Java流處理stream使用詳解

    Java流處理stream使用詳解

    Java8的另一大亮點(diǎn)Stream,它與java.io包里的InputStream和OutputStream是完全不同的概念,下面這篇文章主要給大家介紹了關(guān)于Java8中Stream詳細(xì)使用方法的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • 多線程_解決Runnable接口無start()方法的情況

    多線程_解決Runnable接口無start()方法的情況

    這篇文章主要介紹了多線程_解決Runnable接口無start()方法的情況,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03

最新評論