国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達式|

服務(wù)器之家 - 編程語言 - JAVA教程 - Java xml出現(xiàn)錯誤 javax.xml.transform.TransformerException: java.lang.NullPointerException

Java xml出現(xiàn)錯誤 javax.xml.transform.TransformerException: java.lang.NullPointerException

2020-07-08 14:18masson32 JAVA教程

這篇文章主要介紹了Java xml出現(xiàn)錯誤 javax.xml.transform.TransformerException: java.lang.NullPointerException的相關(guān)資料,需要的朋友可以參考下

Java xml出現(xiàn)錯誤 javax.xml.transform.TransformerException: java.lang.NullPointerException解決辦法:

利用Java操作XML,在操作XML過程中,執(zhí)行到最后一步,在利用Transformer進行XML轉(zhuǎn)換時出現(xiàn)NullPointerException錯誤,出問題的部分代碼如下:

?
1
2
3
4
5
6
7
8
9
10
//轉(zhuǎn)換
TransformerFactory tFactory =TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
//需要轉(zhuǎn)換的內(nèi)存中XML源文件
DOMSource source = new DOMSource(xmlDoc1);
//生成的xml文件
File xmlDoc2 = new File(outPutPath+generateXmlFileName);
StreamResult result = new StreamResult(xmlDoc2);
//轉(zhuǎn)換
transformer.transform(source, result);

運行到transform函數(shù)時出現(xiàn)以下錯誤(比較長,由于我是利用SWING設(shè)計圖形界面的,所以會有一些圖形界面事件調(diào)用的錯誤):

?
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
javax.xml.transform.TransformerException: java.lang.NullPointerException
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transfor
m(TransformerImpl.java:717)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transfor
m(TransformerImpl.java:313)
    at operation.AddNeuronID.addNeuronId(AddNeuronID.java:273)
    at operationUI.AddNeuronIDListener.constructor2Perform(AddNeuronIDListen
er.java:245)
    at operationUI.AddNeuronIDListener.actionPerformed(AddNeuronIDListener.j
ava:85)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:19
95)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
a:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242
)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
istener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6041)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    at java.awt.Component.processEvent(Component.java:5806)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4413)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4243)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322
)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2440)
    at java.awt.Component.dispatchEvent(Component.java:4243)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Caused by: java.lang.NullPointerException
    at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.characters
(ToUnknownStream.java:317)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:240)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:132)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:94)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transfor
mIdentity(TransformerImpl.java:662)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transfor
m(TransformerImpl.java:708)
    ... 29 more
---------
java.lang.NullPointerException
    at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.characters
(ToUnknownStream.java:317)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:240)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:226)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:132)
    at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java
:94)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transfor
mIdentity(TransformerImpl.java:662)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transfor
m(TransformerImpl.java:708)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transfor
m(TransformerImpl.java:313)
    at operation.AddNeuronID.addNeuronId(AddNeuronID.java:273)
    at operationUI.AddNeuronIDListener.constructor2Perform(AddNeuronIDListen
er.java:245)
    at operationUI.AddNeuronIDListener.actionPerformed(AddNeuronIDListener.j
ava:85)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:19
95)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
a:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242
)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
istener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6041)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    at java.awt.Component.processEvent(Component.java:5806)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4413)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4243)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322
)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2440)
    at java.awt.Component.dispatchEvent(Component.java:4243)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

       一開始我也感到奇怪,transform函數(shù)只是把在內(nèi)存中的XML樹轉(zhuǎn)換成文件,為何會出現(xiàn)nullPointer錯誤呢。上網(wǎng)查了一下,沒什么人找到答案,最后在(http://blog.awe.cz/post/english/beware-of-null-text-nodes/)這個blog中找到相當(dāng)有用的答案.

      其實認(rèn)真看看出錯的信息,會發(fā)現(xiàn)有個信息比較重要:

?
1
2
3
java.lang.NullPointerException
at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.characters(ToUnknownStream.java:317)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:240)

     從這里可以看出是由于com.sun.org.apache.xml.internal.serializer.ToUnknownStream.java文件中的characters函數(shù)出錯,所在行數(shù)是317,到j(luò)dk安裝目錄,找到src,到相應(yīng)的文件夾serializer中找到ToUnknownStream.java,找到以下函數(shù)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
  * Converts the String to a character array and calls the SAX method
  * characters(char[],int,int);
  *
  * @see ExtendedContentHandler#characters(String)
  */
  public void characters(String chars) throws SAXException
  {
    final int length = chars.length();
    if (length > m_charsBuff.length)
    {
      m_charsBuff = new char[length*2 + 1];
    }
    chars.getChars(0, length, m_charsBuff, 0);
    this.characters(m_charsBuff, 0, length); 
  

       很明顯,注意int length = chars.length(); 如果參數(shù)chars是null的話,調(diào)用length函數(shù)就會出現(xiàn)nullpoiterException錯誤。再上一層,com.sun.org.apache.xalan.internal.xsltc.trax下的DOM2TO.java文件的parse函數(shù)(240行):

?
1
2
3
case Node.TEXT_NODE:
    _handler.characters(node.getNodeValue());
    break;

      在這里,就可以知道characters函數(shù)為什么出現(xiàn)null參數(shù)了。原因是此結(jié)點是文本結(jié)點TEXT_NODE,而調(diào)用本結(jié)點中沒有內(nèi)容(null),當(dāng)調(diào)用getNodeValue時,返回null.

      上升到transform函數(shù),出現(xiàn)結(jié)點內(nèi)容為null,那在DOMSource類中,由于它是在內(nèi)存中建立起來的XML樹,所以肯定是這個XML樹中的有一個或多個元素或結(jié)點的內(nèi)容為null。

      OK,問題原因找到。解決辦法很簡單,DOMSource中有元素或結(jié)點為null,那一定是在操作XML時,或者是修改內(nèi)容,添加元素等等操作,使內(nèi)容變?yōu)閚ull。所以現(xiàn)在需要做的就是找到修改或添加元素內(nèi)容的代碼,把有可能出現(xiàn)null的情況進行處理,如果檢測到為null,則不修改XML或不添加此元素。最簡單的方法就是用if語句。即setNodeValue(String str)或setTextContent(String str)之前,先查看參數(shù)str是否為空(if(str == null)),如果空則不調(diào)用此函數(shù)。

      而在我的程序中,確實我是把空的內(nèi)容加入到元素中。代碼如下:deviceAndIDMap是一個HashMap,當(dāng)它調(diào)用get時,不存在此主鍵時,會返回null.

?
1
2
3
String neuronIdStr = deviceAndIDMap.get(nameContent);
//更新
neuronIdElem.getFirstChild().setNodeValue(neuronIdStr);

    因此我加一下if語句,就可以解決問題了,代碼(此代碼是在for循環(huán)中的,因此用coninue來跳過本次的修改)如下:

?
1
2
3
4
5
6
7
8
String neuronIdStr = deviceAndIDMap.get(nameContent);
if(neuronIdStr == null)
{
   continue;
}
//更新
neuronIdElem.getFirstChild().setNodeValue(neuronIdStr);
              

    問題解決!

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/masson32/article/details/4517643

延伸 · 閱讀

精彩推薦
  • JAVA教程java和matlab畫多邊形閉合折線圖示例講解

    java和matlab畫多邊形閉合折線圖示例講解

    由于要將“哈密頓回路問題(TSP)”的求解中間結(jié)果表示出來,查了一下使用程序畫多邊形圖形。現(xiàn)在在總結(jié)一下,這個圖是“由給定節(jié)點首尾相連的”閉合...

    java教程網(wǎng)4392019-11-10
  • JAVA教程java中url漢字編碼互相轉(zhuǎn)換實例

    java中url漢字編碼互相轉(zhuǎn)換實例

    這篇文章介紹了java中url漢字編碼互相轉(zhuǎn)換實例,有需要的朋友可以參考一下 ...

    java教程網(wǎng)1682019-10-17
  • JAVA教程linux下執(zhí)行java程序的sh腳本分享

    linux下執(zhí)行java程序的sh腳本分享

    這篇文章主要介紹了linux下執(zhí)行java程序的sh腳本,僅供參考,但是設(shè)置的時候環(huán)境變量是最重要的,我就是環(huán)境變量一直不對,總是按網(wǎng)上查到的來,不明...

    hebedich1472019-11-29
  • JAVA教程Hibernate的Annotation版Hello world實例

    Hibernate的Annotation版Hello world實例

    這篇文章主要介紹了Hibernate的Annotation版Hello world實現(xiàn)方法,詳細分析了Annotation的具體使用步驟與Hello world實現(xiàn)方法,需要的朋友可以參考下 ...

    胡笑語3942020-04-11
  • JAVA教程java設(shè)計模式之簡單工廠模式簡述

    java設(shè)計模式之簡單工廠模式簡述

    這篇文章主要為大家詳細介紹了java設(shè)計模式之簡單工廠模式,簡單工廠模式的實質(zhì)是由一個工廠類根據(jù)傳入的參數(shù),動態(tài)決定應(yīng)該創(chuàng)建哪一個產(chǎn)品類的實例...

    廖為鵬2492020-06-04
  • JAVA教程Java 中的注解詳解及示例代碼

    Java 中的注解詳解及示例代碼

    本文主要介紹Java 中的注解,這里提供了詳細的相關(guān)資料,及示例代碼,幫助大家學(xué)習(xí)理解,有興趣的小伙伴可以參考下 ...

    anquye2001462020-06-09
  • JAVA教程java異步方式實現(xiàn)登錄

    java異步方式實現(xiàn)登錄

    這篇文章主要為大家詳細介紹了java異步方式實現(xiàn)登錄的相關(guān)資料,感興趣的朋友可以參考一下 ...

    舊夢vs逆愛2732020-05-04
  • JAVA教程Java跳出多重嵌套循環(huán)代碼實例

    Java跳出多重嵌套循環(huán)代碼實例

    這篇文章主要介紹了Java跳出多重嵌套循環(huán),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小...

    程序猿||攻城獅1682019-06-19
主站蜘蛛池模板: 欧美性猛交一区二区三区精品 | 成人免费视频在线观看 | 精品久久久久久久久久久久久久 | a在线观看免费视频 | 九九资源站 | 欧洲一区二区三区 | 日本在线观看 | 91国产精品 | 午夜成人免费视频 | 成人在线国产 | 91av电影在线观看 | 中文字幕在线观看日韩 | 亚洲精品免费在线观看视频 | 亚洲专区 中文字幕 | 一区二区日韩精品 | 久久婷婷色 | 久久懂色精品99综一区合 | 二区在线观看 | 欧美一区二区激情视频 | 久久久久一区 | 久久久精品网站 | 国产精品一区二区三区免费 | 国产精品成人一区二区三区夜夜夜 | 国产高清在线精品一区二区三区 | 久草一区 | 欧美日韩国产精品 | 亚洲国产成人精品女人久久久 | 欧美日韩一| 中文字幕日韩欧美一区二区三区 | 中文字幕亚洲欧美日韩在线不卡 | 一区二区三区免费观看视频 | 黄色成人在线 | 亚洲精品久久久久久久久久久 | 成人精品一区二区三区 | 午夜影视免费观看 | 久久综合99 | 欧美区日韩区 | 成人a在线视频免费观看 | 日韩精品在线观看视频 | 中文字幕 亚洲一区 | 午夜成人免费视频 |