一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java讀取解析xml文件實例

java讀取解析xml文件實例

2019-12-14 14:58junjie JAVA教程

這篇文章主要介紹了java讀取解析xml文件實例,本文創建了一個XML解析類同時講解了循環節點輸出方式,需要的朋友可以參考下

讀取本地的xml文件,通過DOM進行解析,DOM解析的特點就是把整個xml文件裝載入內存中,形成一顆DOM樹形結構,樹結構是方便遍歷和和操縱。

DOM解析的特性就是讀取xml文件轉換為 dom樹形結構,通過節點進行遍歷。

這是W3c關于節點的概念

如果xml中包含有大量的數據,由于dom一次性把xml裝入內存中的特性,所以dom不適合于包含大量數據的xml解析。當包含有大量xml的時候,用SAX進行解析比較節省內存。

下面是一個運用DOM進行解析xml文件的例子:

xml文件結構如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
 <book category="cooking">
 <title lang="en">Everyday Italian</title>
 <author>Giada De Laurentiis</author>
 <year>2005</year>
 <price>30.00</price>
 </book>
 <book category="children">
 <title lang="en">Harry Potter</title>
 <author>J K. Rowling</author>
 <year>2005</year>
 <price>29.99</price>
 </book>
 <book category="web">
 <title lang="en">XQuery Kick Start</title>
 <author>James McGovern</author>
 <year>2003</year>
 <price>49.99</price>
 </book>
 <book category="web" cover="paperback">
 <title lang="en">Learning XML</title>
 <author>Erik T. Ray</author>
 <year>2003</year>
 <price>39.95</price>
 </book>
</bookstore>

創建解析xml的類如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package xml.dom;
 
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
 
public class ReadXmlFile {
 
 public static void main(String[] args) {
 
 try{
  
  File xmlFile = new File("src/resource/book.xml");
  
  DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
  
  DocumentBuilder builder = builderFactory.newDocumentBuilder();
  
  Document doc = builder.parse(xmlFile);
  
  doc.getDocumentElement().normalize();
  
  System.out.println("Root element: "+doc.getDocumentElement().getNodeName());
  
  NodeList nList = doc.getElementsByTagName("book");
  
  for(int i = 0 ; i<nList.getLength();i++){
  
  Node node = nList.item(i);
  
  System.out.println("Node name: "+ node.getNodeName());
  Element ele = (Element)node;
  
  System.out.println("----------------------------");
  if(node.getNodeType() == Element.ELEMENT_NODE){
  
  System.out.println("book category: "+ ele.getAttribute("category"));
  
  System.out.println("title name: "+ ele.getElementsByTagName("title").item(0).getTextContent());
  
  System.out.println("author name: "+ele.getElementsByTagName("author").item(0).getTextContent());
  
  System.out.println("year :"+ele.getElementsByTagName("year").item(0).getTextContent());
  
  System.out.println("price : "+ele.getElementsByTagName("price").item(0).getTextContent());
  
  System.out.println("-------------------------");
  
  
  }
  
  
  }
 

解析結果:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Root element: bookstore
Node name: book
----------------------------
book category: cooking
title name: Everyday Italian
author name: Giada De Laurentiis
year :2005
price : 30.00
-------------------------
Node name: book
----------------------------
book category: children
title name: Harry Potter
author name: J K. Rowling
year :2005
price : 29.99
-------------------------
Node name: book
----------------------------
book category: web
title name: XQuery Kick Start
author name: James McGovern
year :2003
price : 49.99
-------------------------
Node name: book
----------------------------
book category: web
title name: Learning XML
author name: Erik T. Ray
year :2003
price : 39.95
-------------------------


以上是通過name獲得對應的值,
下面利用循環節點的方式輸出:
循環節點輸出方式的代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package xml.dom;
 
import java.io.File;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
 
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
 
public class ReadXmlFile2 {
 
 public static void main(String[] args) {
 try{
  
  File xmlFile = new File("src/resource/book.xml");
  
  DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
  
  DocumentBuilder builder = builderFactory.newDocumentBuilder();
  
  Document doc = builder.parse(xmlFile);
  
  doc.getDocumentElement().normalize();
  
  System.out.println("Root element: "+doc.getDocumentElement().getNodeName());
  
  
  if(doc.hasChildNodes()){
  
  printNode(doc.getChildNodes());
  }
 }catch(Exception e){
 
 e.printStackTrace();
 
 }
 
 }
 
 public static void printNode(NodeList nodeList){
 System.out.println("------------------------");
 // System.out.println(nodeList.getLength());
 for(int i = 0; i<nodeList.getLength(); i++){
 
 Node node = (Node)nodeList.item(i);
 
 
 if(node.getNodeType() == Node.ELEMENT_NODE){
 
 System.out.println("node name: "+node.getNodeName());
 
 System.out.println("node value: "+node.getTextContent());
 
 if(node.hasAttributes()){
  NamedNodeMap nodeMap = node.getAttributes();
  
  for(int j = 0; j < nodeMap.getLength() ; j++){
  
  Node nodenew = nodeMap.item(j);
  
  System.out.println("node name "+nodenew.getNodeName());
  System.out.println("node value "+nodenew.getNodeValue());
  }
 }
 if(node.hasChildNodes()){
  printNode(node.getChildNodes());
 }
 }
 
 }
 
 }
 
}

輸出結果如下:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
Root element: bookstore
------------------------
node name: bookstore
node value:
 
 Everyday Italian
 Giada De Laurentiis
 2005
 30.00
 
 
 Harry Potter
 J K. Rowling
 2005
 29.99
 
 
 XQuery Kick Start
 James McGovern
 2003
 49.99
 
 
 Learning XML
 Erik T. Ray
 2003
 39.95
 
 
------------------------
node name: book
node value:
 Everyday Italian
 Giada De Laurentiis
 2005
 30.00
 
node name category
node value cooking
------------------------
node name: title
node value: Everyday Italian
node name lang
node value en
------------------------
node name: author
node value: Giada De Laurentiis
------------------------
node name: year
node value: 2005
------------------------
node name: price
node value: 30.00
------------------------
node name: book
node value:
 Harry Potter
 J K. Rowling
 2005
 29.99
 
node name category
node value children
------------------------
node name: title
node value: Harry Potter
node name lang
node value en
------------------------
node name: author
node value: J K. Rowling
------------------------
node name: year
node value: 2005
------------------------
node name: price
node value: 29.99
------------------------
node name: book
node value:
 XQuery Kick Start
 James McGovern
 2003
 49.99
 
node name category
node value web
------------------------
node name: title
node value: XQuery Kick Start
node name lang
node value en
------------------------
node name: author
node value: James McGovern
------------------------
node name: year
node value: 2003
------------------------
node name: price
node value: 49.99
------------------------
node name: book
node value:
 Learning XML
 Erik T. Ray
 2003
 39.95
 
node name category
node value web
node name cover
node value paperback
------------------------
node name: title
node value: Learning XML
node name lang
node value en
------------------------
node name: author
node value: Erik T. Ray
------------------------
node name: year
node value: 2003
------------------------
node name: price
node value: 39.95
------------------------

 

關于節點的問題:

?
1
2
3
4
5
6
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>

對于 book應用:doc.getChildNodes() 得到一個NodeList其中NodeList的長度為9
9個節點分別如下:
title節點
lang節點 
Everyday節點
 author節點
Giada De Laurentiis節點
 year節點
 2005節點
 price節點
 30.00節點

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 俄罗斯大逼 | 2022超帅男同gayxxx | 乌克兰bbw| 2021最新国产成人精品免费 | 亚洲国产欧美另类 | 精品国产一区二区三区国产馆 | 高清麻生希在线 | 青青青久热国产精品视频 | 91大神在线精品视频一区 | 亚洲激情婷婷 | 国产精品夜色视频一级区 | 色就色欧美综合偷拍区a | 欧美一级在线播放 | 亚洲精品在线看 | 欧美日韩一区视频 | 久久精品热在线观看85 | 欧美高清国产 | 91麻豆国产精品91久久久 | 白丝尤物的下面被疯狂蹂躏 | 久久亚洲高清观看 | 久久91精品国产91 | 九九热在线免费观看 | 男人视频网| 日本福利视频一区 | 国产美女下面流出白浆视频 | 亚洲经典激情春色另类 | 大陆黄色片 | 国产精品第四页 | 国产第一综合另类色区奇米 | 免费高清资源黄网站在线观看 | 美女被扒开屁股进去网 | 99久久国产综合精品1尤物 | 韩剧消失的眼角膜免费完整版 | 日韩在线天堂 | 男人扒开女人下身添 | 香港三级血恋3 | 美女脱一净二净不带胸罩 | 国产美女亚洲精品久久久久久 | 美女尿口羞羞视频 | 久久99re8热在线播放 | 国产草逼视频 |