成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Jdom解析嵌套XML

開發 后端
本博文主要采用Jdom對XML 進行了詳細的解析(包括了嵌套的XML、XML格式的字符串、XML文件以及XPATH的使用等等),基本能夠滿足了平時工作之中所遇到的所有解析XML 工作。

本博文主要采用Jdom對XML 進行了詳細的解析(包括了嵌套的XML、XML格式的字符串、XML文件以及XPATH的使用等等),基本能夠滿足了平時工作之中所遇到的所有解析XML 工作。

搭建Jdom 解析環境

給項目添加資源jar包:jdom-2.0.1.jar

具體解析方法

Jdom 的解析器(SAXBuilder)在org.jdom2.input.*這個包里,其中的DOMBuilder 的功能是將DOM 模型的Document解析成Jdom 模型的Document;SAXBuilder 的功能是從文件或者流中解析解析出符合JDOM模型的XML樹。

①解析XML 文件的代碼

  1. // 創建一個 SAXBuilder  
  2. SAXBuilder saxBuilder = new SAXBuilder();  
  3.  
  4. try {  
  5. // 給XML 文件構造一個Document  
  6. Document document = saxBuilder.build("resources/Classinfo.xml");  
  7.  
  8. // 獲取根元素  
  9. Element root = document.getRootElement();  
  10.  
  11. catch (JDOMException e) {  
  12. // TODO Auto-generated catch block  
  13. e.printStackTrace();  
  14.  
  15. catch (IOException e) {  
  16. // TODO Auto-generated catch block  
  17. e.printStackTrace();  
  18.  
  19. }  

②解析XML 字符串的代碼

  1. // 創建測試 XML  
  2. String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
  3. +"<class>" 
  4. +"<name>五年級</name>" 
  5. +"<teacher>張老師</teacher>" 
  6. +"<students>" 
  7. +"<student schoolNo=\"5001\"><name>小明</name><sex>男</sex></student>" 
  8. +"<student schoolNo=\"5002\"><name>小紅</name><sex>女</sex></student>" 
  9. +"</students>" 
  10. +"</class>";  
  11.  
  12. // 創建一個字符串的字符流  
  13. StringReader reader = new StringReader(xmlString);  
  14.  
  15. // 創建新的輸入源 SAX 解析將使用的InputSource 對象來讀取 XML   
  16. InputSource source = new InputSource(reader);  
  17.  
  18. // 創建一個 SAXBuilder  
  19. SAXBuilder saxBuilder = new SAXBuilder();  
  20.  
  21. try {  
  22. // 通過輸入源構造一個Document  
  23. Document document = saxBuilder.build(source);  
  24.  
  25. // 獲取根元素  
  26. Element root = document.getRootElement();  
  27.  
  28. catch (JDOMException e) {  
  29.     // TODO Auto-generated catch block  
  30.     e.printStackTrace();  
  31. catch (IOException e) {  
  32.     // TODO Auto-generated catch block  
  33.     e.printStackTrace();  

PS:其實解析XML 格式的字符串就是解析XML 流!

Jdom的Element 對象常用的方法:

 

方  法 說  明
getChild("childname") 返回指定名字的子節點,如果同一級有多個同名子節點,則只返回第一個;如果沒有返回null值。
getChildren("childname") 返回指定名字的子節點List集合。這樣你就可以遍歷所有的同一級同名子節點。
getAttributeValue("name") 返回指定屬性名字的值。如果沒有該屬性則返回null,有該屬性但是值為空,則返回空字符串。
getChildText("childname") 返回指定子節點的內容文本值。
getText() 返回該元素的內容文本值。

完整解析代碼

  1. /**  
  2.  * Create by iflytekwill@qq.com in 2012-5-15  
  3.  */ 
  4. package com.javawill.analysis;  
  5.  
  6. import java.io.IOException;  
  7. import java.io.StringReader;  
  8. import java.util.Iterator;  
  9. import java.util.List;  
  10.  
  11. import org.jdom2.Document;  
  12. import org.jdom2.Element;  
  13. import org.jdom2.JDOMException;  
  14. import org.jdom2.input.SAXBuilder;  
  15. import org.xml.sax.InputSource;  
  16.  
  17. /**  
  18.  * 解析 XML 字符串類  
  19.  * @author <a href="mailto:iflytekwill@qq.com">WillKinG</a>  
  20.  * @version 1.0  
  21.  */ 
  22. public class AnalysisXmlString {  
  23.     /**  
  24.      * 解析方法  
  25.      */ 
  26.     public void analysis(){  
  27.         // 創建測試 XML  
  28.         String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
  29.             +"<class>" 
  30.             +"<name>五年級</name>" 
  31.             +"<teacher>張老師</teacher>" 
  32.             +"<students>" 
  33.             +"<student schoolNo=\"5001\"><name>小明</name><sex>男</sex></student>" 
  34.             +"<student schoolNo=\"5002\"><name>小紅</name><sex>女</sex></student>" 
  35.             +"</students>" 
  36.             +"</class>";  
  37.           
  38.         // 創建一個字符串的字符流  
  39.         StringReader reader = new StringReader(xmlString);  
  40.           
  41.         // 創建新的輸入源 SAX 解析將使用的InputSource 對象來讀取 XML   
  42.         InputSource source = new InputSource(reader);  
  43.           
  44.         // 創建一個 SAXBuilder  
  45.         SAXBuilder saxBuilder = new SAXBuilder();  
  46.           
  47.         try {  
  48.             // 通過輸入源構造一個Document  
  49.             Document document = saxBuilder.build(source);  
  50.               
  51.             // 獲取根元素  
  52.             Element root = document.getRootElement();  
  53.               
  54.             // 獲取Class 信息  
  55.             String clzName = root.getChildText("name");  
  56.             String clzTeacher = root.getChildText("teacher");  
  57.             System.out.println("Class Name:" + clzName + ";Class Teacher:" + clzTeacher);  
  58.               
  59.             // 解析班級中的學生  
  60.             Element stuRoot = root.getChild("students");  
  61.             List list = stuRoot.getChildren("student");  
  62.             System.out.println("---- 班級共有" + list.size() + "名學生 ----");  
  63.               
  64.             for (Iterator it = list.iterator(); it.hasNext();) {  
  65.                 Element student = (Element) it.next();  
  66.                   
  67.                 // 獲取Student 信息  
  68.                 String stuNo = student.getAttributeValue("schoolNo");  
  69.                   
  70.                 String stuName = student.getChildText("name");  
  71.                 String stuSex = student.getChildText("sex");  
  72.                   
  73.                 System.out.println("Student No:" + stuNo + ";Student Name:" + stuName + ";Student Sex:" + stuSex);  
  74.             }  
  75.         } catch (JDOMException e) {  
  76.             // TODO Auto-generated catch block  
  77.             e.printStackTrace();  
  78.         } catch (IOException e) {  
  79.             // TODO Auto-generated catch block  
  80.             e.printStackTrace();  
  81.         }  
  82.     }  
  83.     /**  
  84.      * 執行方法  
  85.      * @param args  
  86.      */ 
  87.     public static void main(String[] args) {  
  88.         AnalysisXmlString analysisXml = new AnalysisXmlString();  
  89.         analysisXml.analysis();  
  90.     }  
  91. }  

運行上面的代碼,控制臺返回值

  1. Class Name:五年級;Class Teacher:張老師  
  2. ---- 班級共有2名學生 ----  
  3. Student No:5001;Student Name:小明;Student Sex:男  
  4. Student No:5002;Student Name:小紅;Student Sex:女 

原文鏈接:http://javawill.iteye.com/blog/1537335

責任編輯:林師授 來源: javawill的博客
相關推薦

2010-06-22 14:58:50

JDOMJavaXML

2011-11-17 13:04:58

JDOMJavaXML

2009-06-29 18:04:32

JDOM文檔JSP

2013-06-08 11:04:18

Android開發Pull解析XMLAndroid XML

2009-09-09 14:40:15

C# XML解析

2022-03-22 09:41:31

Java編程語言持久化

2012-08-16 15:56:33

XML

2011-08-04 18:39:32

iOS XML

2009-07-20 14:04:27

WebWork標簽嵌套

2014-12-31 14:09:23

xml解析

2010-09-28 10:03:15

DOM文檔對象模型

2011-02-22 14:10:25

PHPXML

2010-09-09 13:55:47

XML DOM

2009-09-09 13:57:28

C# XML解析

2010-01-25 18:22:33

Android使用XM

2009-02-17 11:23:08

2010-07-26 15:06:29

Perl解析XML文件

2010-02-03 17:52:11

Python 2.0

2011-07-27 17:24:31

iPhone NSXMLParse XML

2021-09-30 07:26:15

YamlJsonXml
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产羞羞视频在线观看 | 亚洲精品小视频在线观看 | 91在线一区| 国产精品高潮呻吟久久久久 | 国产一区二区免费 | 2019精品手机国产品在线 | 亚洲精品一区二三区不卡 | 99久久精品一区二区毛片吞精 | 国产91在线 | 欧美 | 日本小电影在线 | 久久精品国产亚洲 | 久久久久久女 | 国产一级视频在线播放 | 中文字幕一区二区三区在线视频 | 一本一道久久a久久精品综合蜜臀 | 成人在线一区二区三区 | 欧美亚洲国产精品 | 91五月婷蜜桃综合 | 久久亚洲欧美日韩精品专区 | 最新国产精品 | 久久久精品网站 | 国产欧美日韩一区二区三区在线观看 | 免费色网址 | 亚洲一区二区三区观看 | 伊人春色成人 | 久草视| 亚洲欧美激情视频 | 国产99视频精品免费播放照片 | 国产高清在线精品一区二区三区 | 国产精品欧美一区二区三区不卡 | 成年人网站免费 | 亚洲欧美国产毛片在线 | 一区二区三区精品 | 亚洲国产成人精品女人久久久 | 91精品免费视频 | 亚洲福利| 日本不卡一二三 | 色狠狠一区 | 国产精品日韩一区二区 | 成年人黄色一级毛片 | 成人免费视频7777777 |