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

Javaweb中使用Jdom解析xml的方法

 更新時間:2016年09月29日 09:02:58   作者:升少  
Jdom是一個開源項目,基于樹形結(jié)構(gòu),利用純java的技術(shù)對XML文檔實現(xiàn)解析,生成,序列化以及多種操作.這篇文章主要介紹了Javaweb中使用Jdom解析xml的方法的相關(guān)資料,需要的朋友可以參考下

一、前言

Jdom是什么?

Jdom是一個開源項目,基于樹形結(jié)構(gòu),利用純java的技術(shù)對XML文檔實現(xiàn)解析,生成,序列化以及多種操作。它是直接為java編程服務(wù),利用java語言的特性(方法重載,集合),把SAX和DOM的功能結(jié)合起來,盡可能的把原來解析xml變得簡單,我們使用Jdom解析xml會是一件輕松的事情。

Jdom的優(yōu)點:

1、Jdom專用于java技術(shù),比Dom應(yīng)用占用更少內(nèi)存。

2、Jdom提供更加簡單和邏輯性訪問xml信息的基礎(chǔ)方法

3、除xml文件外,Jdom還可以訪問其他的數(shù)據(jù)源,例如可以創(chuàng)建類從SQL查詢結(jié)果中訪問數(shù)據(jù)

Jdom的構(gòu)成:

Jdom由6個包構(gòu)成

Element類表示XML文檔的元素

org.jdom:      解析xml文件所要用到的基礎(chǔ)類

org.jdom.adapters: 包含DOM適配的Java類

org.jdom.filter:    包含xml文檔的過濾類

org.jdom.input:   包含讀取XML文檔的Java類

org.jdom.output: 包含輸出XML文檔的類

org.jdom.trans form: 包含將Jdom xml文檔接口轉(zhuǎn)換為其他XML文檔接口的Java類

xml是什么?

xml是一種廣為使用的可擴展標記語言,java中解析xml的方式有很多,最常用的像jdom、dom4j、sax等等。

Jdom包下載:http://www.jdom.org/downloads/index.html

這里筆者代碼做的是使用java創(chuàng)建一個xml和讀取一個xml,僅作為筆記介紹。

二、操作

下載jdom包,解壓文件jdom-2.0.6.jar,jdom-2.0.6-javadoc.jar,將包導(dǎo)入到lib文件夾下。(注,如果有錯誤的話,將Jdom中的包全部導(dǎo)入)

例子1:使用jdom創(chuàng)建一個xml文件,名字為people.xml

新建類CareateJdom

package com.book.jdom;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
//生成xml文件
public class CreateJdom {
public static void main(String[] args) {
//定義元素
Element people,student;
people = new Element("people");
student = new Element("student");
//設(shè)置屬性
student.setAttribute("name", "張三");
student.setAttribute("salary","8000");
//設(shè)置文本
student.setText("呵呵");
//將其添加到根目錄下
people.addContent(student);
//新建一個文檔。
Document doc = new Document(people);
//讀取格式,賦值給當前的Format
Format format = Format.getCompactFormat();
//對當前格式進行初始化
format.setEncoding("UTF-8");
//設(shè)置xml文件縮進4個空格
format.setIndent(" ");
//建一個xml輸出工廠,將格式給工廠
XMLOutputter xmlout = new XMLOutputter(format);
try {
//將其寫好的文本給工廠,并且建一個文件輸出流,將數(shù)據(jù)輸出
xmlout.output(doc, new FileOutputStream("people.xml"));
System.out.println("成功!");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*運行結(jié)果:
<?xml version="1.0" encoding="UTF-8"?>
<people>
<student name="張三" salary="8000" />
</people>
* */

例子2:使用Jdom解析people.xml文件

新建Readxml類

package com.book.jdom;
import java.io.IOException;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
//讀取people.xml文檔
public class Readxml {
public static void main(String[] args) {
//新建構(gòu)造器解析xml
SAXBuilder sax = new SAXBuilder();
//建一個文檔去接受數(shù)據(jù)
Document doc;
try {
//獲取people.xml文檔
doc = sax.build("people.xml");
//獲得根節(jié)點
Element people = doc.getRootElement();
//獲得根節(jié)點下的節(jié)點數(shù)據(jù)
List<Element> list = people.getChildren();
for(int i = 0;i<list.size();i++){
Element e = list.get(i);
//獲得屬性值
System.out.println("name:"+e.getAttributeValue("name")+" salary:"+e.getAttributeValue("salary"));
//獲得文本值
System.out.println(e.getText());
}
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/*
* 運行結(jié)果:
* name:張三 salary:8000
呵呵
* */

解析xml

用jdom獲取多個相同標簽名的不同屬性值的方法
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Key Name="China">
      <Value Name="TextKey">China</Value>
      <Value Name="Enabled">true</Value>
      <Value Name="PhotoIDWidth">38PhotoIDWidth</Value>
      <Value Name="PhotoIDHeight">38</Value>
      <Key Name="Adult">
        <Value Name="CrownPercent">0.10</Value>
        <Value Name="HeadPercent">0.60AdultHeadPercent</Value>
      </Key>
      <Key Name="Child">
        <Value Name="CrownPercent">0.10</Value>
        <Value Name="HeadPercent">0.60ChildHeadPercent</Value>
      </Key>
    </Key>
    <Key Name="Australia">
      <Value Name="TextKey">Australia</Value>
      <Value Name="Enabled">true</Value>
      <Value Name="PhotoIDWidth">35PhotoIDWidth</Value>
      <Value Name="PhotoIDHeight">45</Value>
      <Key Name="Adult">
        <Value Name="CrownPercent">0.061</Value>
        <Value Name="HeadPercent">0.756"Adult"HeadPercent</Value>
      </Key>
      <Key Name="Child">
        <Value Name="CrownPercent">0.072</Value>
        <Value Name="HeadPercent">0.711ChildHeadPercent</Value>
      </Key>
    </Key>
    <Key Name="Austria">
      <Value Name="TextKey">Austria</Value>
      <Value Name="Enabled">true</Value>
      <Value Name="PhotoIDWidth">35PhotoIDWidth</Value>
      <Value Name="PhotoIDHeight">45</Value>
      <Key Name="Adult">
        <Value Name="CrownPercent">0.064</Value>
        <Value Name="HeadPercent">0.744AdultHeadPercent</Value>
      </Key>
      <Key Name="Child">
        <Value Name="CrownPercent">0.078</Value>
        <Value Name="HeadPercent">0.689ChildHeadPercent</Value>
      </Key>
    </Key>
</Configuration>
package input;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
public class ReadXML {
  /**
   * @param args
   */
  public static void main(String[] args) throws JDOMException, IOException {
    SAXBuilder sb = new SAXBuilder();
    //構(gòu)造文檔對象
    Document doc = sb.build(Test.class.getClassLoader().getResourceAsStream("nation.xml"));
    //獲取根元素
    Element root = doc.getRootElement();
    //定位到<Configuration> -> <Key>
    List<Element> list = root.getChildren("Key");
    List<Element> children = new ArrayList<Element>();
    List<Element> childrens = new ArrayList<Element>();
    for (int i = 0; i < list.size(); i++) {
      Element element = (Element) list.get(i);
      System.out.print(element.getAttributeValue("Name"));
      //定位到<Configuration> -> <Key> -> <Value>
      children = element.getChildren("Value"); 
      for(int j=0; j<children.size(); j++){
        Element elementChildren = (Element) children.get(j);
        //定位到<Configuration> -> <Key> -> <Value Name="PhotoIDWidth">
        if(elementChildren.getAttributeValue("Name").equals("PhotoIDWidth")){
          //獲取<Configuration> -> <Key> -> <Value Name="PhotoIDWidth"> 屬性值
          System.out.print("<--------->"+elementChildren.getAttributeValue("Name"));
          //獲取<Configuration> -> <Key> -> <Value Name="PhotoIDWidth"> 標簽里內(nèi)容
          System.out.print(","+elementChildren.getText());
        }
      }
      children.clear();
      //定位到<Configuration> -> <Key> -> <Key>
      children = element.getChildren("Key");
      for(int j=0; j<children.size(); j++){
        Element elementChildren = (Element)children.get(j);
        //定位到<Configuration> -> <Key> -> <Key Name="Child">
        if(elementChildren.getAttributeValue("Name").equals("Child")){
          //定位到<Configuration> -> <Key> -> <Key Name="Child"> -> <Value>
          childrens = elementChildren.getChildren("Value");
          for(int k=0; k<childrens.size(); k++){
            Element elementChildrens = (Element)childrens.get(k);
            //定位到<Configuration> -> <Key> -> <Key Name="Child"> -> <Value Name="HeadPercent">
            if(elementChildrens.getAttributeValue("Name").equals("HeadPercent")){
              System.out.println("<--------->"+elementChildrens.getText());
            }
          }
        }
      }
    }
  }
}
打印結(jié)果:
China<--------->PhotoIDWidth,38PhotoIDWidth<--------->0.60ChildHeadPercent
Australia<--------->PhotoIDWidth,35PhotoIDWidth<--------->0.711ChildHeadPercent
Austria<--------->PhotoIDWidth,35PhotoIDWidth<--------->0.689ChildHeadPercent

以上所述是小編給大家介紹的Javaweb中使用Jdom解析xml的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • java實現(xiàn)MD5加密算法的實例代碼

    java實現(xiàn)MD5加密算法的實例代碼

    這篇文章主要介紹了java實現(xiàn)MD5加密算法的實例代碼,有需要的朋友可以參考一下
    2013-12-12
  • Java concurrency集合之CopyOnWriteArraySet_動力節(jié)點Java學(xué)院整理

    Java concurrency集合之CopyOnWriteArraySet_動力節(jié)點Java學(xué)院整理

    CopyOnWriteArraySet基于CopyOnWriteArrayList實現(xiàn),其唯一的不同是在add時調(diào)用的是CopyOnWriteArrayList的addIfAbsent(若沒有則增加)方法
    2017-06-06
  • 關(guān)于如何搭建CAS服務(wù)并將CAS項目導(dǎo)入IDEA

    關(guān)于如何搭建CAS服務(wù)并將CAS項目導(dǎo)入IDEA

    這篇文章主要介紹了關(guān)于如何搭建CAS服務(wù)并將CAS項目導(dǎo)入IDEA的問題,文中提供了詳細的圖文講解,需要的朋友可以參考下,如果有錯誤的地方還請指正
    2023-03-03
  • 全面解析SpringBoot文件上傳功能

    全面解析SpringBoot文件上傳功能

    這篇文章主要為大家全面解析SpringBoot文件上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Java中的MultipartFile接口和File類解讀

    Java中的MultipartFile接口和File類解讀

    本文主要介紹了Java中的File類和Spring框架中的MultipartFile接口,File類提供了對文件和目錄操作的方法,如創(chuàng)建、刪除、重命名、判斷文件是否存在等,MultipartFile接口用于處理文件上傳,提供了獲取上傳文件信息和保存上傳文件的方法
    2025-02-02
  • java @Value(

    java @Value(

    這篇文章主要介紹了java @Value("${}")獲取不到配置文件中值的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Eclipse快捷鍵使用小結(jié)

    Eclipse快捷鍵使用小結(jié)

    Eclipse是用java的同行必不可少的工具,我總結(jié)了一下它的快捷鍵,太常用的ctrl+單擊、ctrl+shift+F、Ctrl+1等我就不細說了,主要是方便查看。下邊小編就詳細的為大家介紹一下
    2013-07-07
  • 詳解Java數(shù)組擴容縮容與拷貝的實現(xiàn)和原理

    詳解Java數(shù)組擴容縮容與拷貝的實現(xiàn)和原理

    這篇文章主要帶大家學(xué)習數(shù)組的擴容、縮容及拷貝,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2023-05-05
  • JSP 獲取spring容器中bean的兩種方法總結(jié)

    JSP 獲取spring容器中bean的兩種方法總結(jié)

    這篇文章主要介紹了JSP 獲取spring容器中bean的方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • JDK1.7 Paths,Files類實現(xiàn)文件夾的復(fù)制與刪除的實例

    JDK1.7 Paths,Files類實現(xiàn)文件夾的復(fù)制與刪除的實例

    下面小編就為大家分享一篇JDK1.7 Paths,Files類實現(xiàn)文件夾的復(fù)制與刪除的實例,具有很好的參考價值,希望對大家有所幫助。以前跟隨小編過來看看吧
    2017-11-11

最新評論

上饶县| 改则县| 朔州市| 罗甸县| 通海县| 长兴县| 湟中县| 云安县| 六安市| 凉城县| 乐山市| 安陆市| 巩留县| 红安县| 嘉鱼县| 宝鸡市| 津南区| 济阳县| 枝江市| 榆林市| 同德县| 云南省| 武邑县| 遂昌县| 昌乐县| 永德县| 普格县| 桐梓县| 始兴县| 凤城市| 星座| 富蕴县| 蒲江县| 舞钢市| 龙岩市| 确山县| 靖远县| 南华县| 磴口县| 漳平市| 永州市|