中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java如何實現解析并生成xml

發布時間:2020-07-17 11:10:01 來源:億速云 閱讀:147 作者:小豬 欄目:編程語言

這篇文章主要講解了Java如何實現解析并生成xml,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

XML解析:

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

xml解析思想:

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

Document
Element
Text
Attribute
Comment

* SAX:逐行讀取,基于事件驅動
* 優點:不占內存,速度快
* 缺點:只能讀取,不能回寫

xml常用的解析器:

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

1.導入jar包 dom4j.jar

2.創建解析器

SAXReader reader = new SAXReader();

3.解析xml 獲得document對象

Document document = reader.read(url);

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

使用步驟:

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

2、創建解析器

SAXReader reader = new SAXReader();

3、解析xml 獲得document對象

Document document = reader.read(url);

* 解析XML:

// 1、得到某個具體的節點內容:第2本書的書名--》葵花寶典

// 2、遍歷所有元素節點

XPath:

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

例子:

/* demo.xml
<&#63;xml version="1.0" encoding="UTF-8"&#63;>
<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<&#63;> list = root.elements("book");
  Element book2 = (Element) list.get(1);
  System.out.println(book2.attributeValue("name"));
  for(Iterator<&#63;> 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<&#63;> 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());
  }
}

看完上述內容,是不是對Java如何實現解析并生成xml有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

利津县| 北安市| 侯马市| 遵义市| 台北市| 景德镇市| 永顺县| 富蕴县| 祁门县| 吉水县| 阿荣旗| 景德镇市| 进贤县| 尼勒克县| 常熟市| 盈江县| 常山县| 汾阳市| 台安县| 桃园市| 朔州市| 广宗县| 临沭县| 承德市| 偏关县| 九龙城区| 衡东县| 汾西县| 南开区| 丹东市| 山西省| 应城市| 来安县| 阜城县| 防城港市| 新津县| 光山县| 霸州市| 清涧县| 明光市| 乐昌市|