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

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

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

服務器之家 - 編程語言 - JAVA教程 - java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion問題解決方法

java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion問題解決方法

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

這篇文章主要介紹了java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion問題解決方法,導致本文問題的原因是缺少一個xerces.jar jar包,需要的朋友可以參考下

讀取本地的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節點

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 隔壁老王国产在线精品 | 国产午夜不卡 | juliaann丝袜精品系列 | 美女被灌浣肠失禁视频 | 日本一区二区三区在线 观看网站 | 紧身牛仔裤美女被啪啪久久网 | 香蕉草莓视频 | 香蕉视频在线观看网站 | 青春草在线观看精品免费视频 | 亚洲zooz人禽交xxxx | 欧美第十页 | 欧美国产日本精品一区二区三区 | 校园全黄h全肉细节文 | 美女福利视频网站 | 大香人蕉免费视频75 | 久久精品视频在线看 | dasd-698黑人在线播放 | 日韩成a人片在线观看日本 日韩不卡一区二区 | 好湿好紧好多水c | 久久无码AV亚洲精品色午夜麻豆 | aaa一级特黄 | 国产福利不卡视频在免费 | 国产精品青青在线观看香蕉 | 十八女下面流水不遮免费 | 午夜爱 | 亚洲精品一区二区三区中文字幕 | 国产大乳美女挤奶视频 | 男人边吃奶边做好爽视频免费 | 色综合视频在线观看 | 日本69sex护士www | 精品国产剧情在线观看 | 天海翼三级 | ipx-177绝对领域在线观看 | 无人区1免费完整观看 | 嫩草影院永久在线一二三四 | 成人福利影院 | 高清在线免费 | 亚洲日韩男人网在线 | 四虎影视在线影院在线观看观看 | 欧美有码 | 欧美色图亚洲 |