最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

XML解析:

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

xml解析思想:

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

Document
Element
Text
Attribute
Comment

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

xml常用的解析器:

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

1.導入jar包 dom4j.jar

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

SAXReader reader = new SAXReader();

3.解析xml 獲得document對象

Document document = reader.read(url);

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

使用步驟:

1、注意:要導包 jaxen...jar

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

SAXReader reader = new SAXReader();

3、解析xml 獲得document對象

Document document = reader.read(url);

* 解析XML:

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

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

XPath:

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

例子:

/* 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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • spring定時器定時任務到時間未執(zhí)行問題的解決

    spring定時器定時任務到時間未執(zhí)行問題的解決

    這篇文章主要介紹了spring定時器定時任務到時間未執(zhí)行問題的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 解決ApplicationContext獲取不到Bean的問題

    解決ApplicationContext獲取不到Bean的問題

    這篇文章主要介紹了解決ApplicationContext獲取不到Bean的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Spring?Boot中使用Swagger3.0.0版本構建RESTful?APIs的方法

    Spring?Boot中使用Swagger3.0.0版本構建RESTful?APIs的方法

    Swagger?是一個規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化?RESTful?風格的?Web?服務,這篇文章主要介紹了Spring?Boot中使用Swagger3.0.0版本構建RESTful?APIs的方法,需要的朋友可以參考下
    2022-11-11
  • 使用Log4j為項目配置日志輸出應用詳解以及示例演示的實現(xiàn)分析

    使用Log4j為項目配置日志輸出應用詳解以及示例演示的實現(xiàn)分析

    本篇文章是對Log4j為項目配置日志輸出應用詳解以及示例演示的實現(xiàn)進行了分析介紹,需要的朋友參考下
    2013-05-05
  • Java頻繁創(chuàng)建線程排查和解決方案

    Java頻繁創(chuàng)建線程排查和解決方案

    文章討論了Java線程池的使用和配置,以及線程對內(nèi)存的影響,作者通過實驗和理論分析,指出線程并不是占用JVM的內(nèi)存,而是由操作系統(tǒng)分配的本地線程,文章還提到了線程池的優(yōu)點,如節(jié)省系統(tǒng)開銷、提高性能和方便控制
    2025-02-02
  • Java詳細講解依賴注入的方式

    Java詳細講解依賴注入的方式

    Idea中使用@Autowire注解會出現(xiàn)提示黃線,強迫癥患者看著很難受,使用構造器注入或者setter方法注入后可解決,下面我們一起來看看
    2022-06-06
  • Java中的異常Exception與處理方式詳解

    Java中的異常Exception與處理方式詳解

    這篇文章主要介紹了Java中的異常Exception與處理方式詳解, Java語言中,將程序執(zhí)行中發(fā)生的不正常情況稱為"異常"(開發(fā)過程中的語法錯誤和邏輯錯誤不是異常),需要的朋友可以參考下
    2024-01-01
  • Java設計模式之策略模式詳細解析

    Java設計模式之策略模式詳細解析

    這篇文章主要介紹了Java設計模式之策略模式詳細解析,策略模式中,定義算法族,分別封裝起來,讓他們之間可以相互轉化,此模式讓算法的變化獨立于使用算法的客戶,需要的朋友可以參考下
    2023-11-11
  • 解決mybatisPlus 中的field-strategy配置失效問題

    解決mybatisPlus 中的field-strategy配置失效問題

    這篇文章主要介紹了解決mybatisPlus 中的field-strategy配置失效問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java SpringBoot自動配置原理詳情

    Java SpringBoot自動配置原理詳情

    這篇文章主要介紹了Java SpringBoot自動配置原理詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07

最新評論

西畴县| 云阳县| 鹤山市| 苍山县| 乐至县| 雷山县| 廉江市| 都昌县| 武平县| 静乐县| 元氏县| 玛沁县| 岫岩| 青浦区| 利津县| 嵊泗县| 石景山区| 织金县| 潜江市| 延吉市| 离岛区| 九龙县| 无极县| 正阳县| 麻栗坡县| 上思县| 乌恰县| 盐城市| 武冈市| 筠连县| 且末县| 富裕县| 易门县| 普格县| 元阳县| 宁德市| 阜宁县| 宝丰县| 耒阳市| 大渡口区| 玛沁县|