- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Java xml出现错误 javax.xml.transform.TransformerException: java.lang.NullPointerException由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Java xml出现错误 javax.xml.transform.TransformerException: java.lang.NullPointerException解决办法:
利用Java操作XML,在操作XML过程中,执行到最后一步,在利用Transformer进行XML转换时出现NullPointerException错误,出问题的部分代码如下:
1
2
3
4
5
6
7
8
9
10
|
//转换
TransformerFactory tFactory =TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
//需要转换的内存中XML源文件
DOMSource source =
new
DOMSource(xmlDoc1);
//生成的xml文件
File xmlDoc2 =
new
File(outPutPath+generateXmlFileName);
StreamResult result =
new
StreamResult(xmlDoc2);
//转换
transformer.transform(source, result);
|
运行到transform函数时出现以下错误(比较长,由于我是利用SWING设计图形界面的,所以会有一些图形界面事件调用的错误):
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函数只是把在内存中的XML树转换成文件,为何会出现nullPointer错误呢。上网查了一下,没什么人找到答案,最后在(http://blog.awe.cz/post/english/beware-of-null-text-nodes/)这个blog中找到相当有用的答案. 。
其实认真看看出错的信息,会发现有个信息比较重要:
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函数出错,所在行数是317,到jdk安装目录,找到src,到相应的文件夹serializer中找到ToUnknownStream.java,找到以下函数 。
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(); 如果参数chars是null的话,调用length函数就会出现nullpoiterException错误。再上一层,com.sun.org.apache.xalan.internal.xsltc.trax下的DOM2TO.java文件的parse函数(240行)
1
2
3
|
case
Node.TEXT_NODE:
_handler.characters(node.getNodeValue());
break
;
|
在这里,就可以知道characters函数为什么出现null参数了。原因是此结点是文本结点TEXT_NODE,而调用本结点中没有内容(null),当调用getNodeValue时,返回null. 。
上升到transform函数,出现结点内容为null,那在DOMSource类中,由于它是在内存中建立起来的XML树,所以肯定是这个XML树中的有一个或多个元素或结点的内容为null.
OK,问题原因找到。解决办法很简单,DOMSource中有元素或结点为null,那一定是在操作XML时,或者是修改内容,添加元素等等操作,使内容变为null。所以现在需要做的就是找到修改或添加元素内容的代码,把有可能出现null的情况进行处理,如果检测到为null,则不修改XML或不添加此元素。最简单的方法就是用if语句。即setNodeValue(String str)或setTextContent(String str)之前,先查看参数str是否为空(if(str == null)),如果空则不调用此函数.
而在我的程序中,确实我是把空的内容加入到元素中。代码如下:deviceAndIDMap是一个HashMap,当它调用get时,不存在此主键时,会返回null. 。
1
2
3
|
String neuronIdStr = deviceAndIDMap.get(nameContent);
//更新
neuronIdElem.getFirstChild().setNodeValue(neuronIdStr);
|
因此我加一下if语句,就可以解决问题了,代码(此代码是在for循环中的,因此用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 xml出现错误 javax.xml.transform.TransformerException: java.lang.NullPointerException的文章就讲到这里了,如果你想了解更多关于Java xml出现错误 javax.xml.transform.TransformerException: java.lang.NullPointerException的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我的应用程序从一个有 5 个选项卡的选项卡栏 Controller 开始。一开始,第一个出现了它的名字,但其他四个没有名字,直到我点击它们。然后根据用户使用的语言显示名称。如何在选项卡栏出现之前设置选
我有嵌套数组 json 对象(第 1 层、第 2 层和第 3 层)。我的问题是数据表没有出现。任何相关的 CDN 均已导入。该表仅显示部分。我引用了很多网站,但都没有解决我的问题。 之前我使用标准表来
我正在尝试设置要显示的 Parse PFLoginViewController。这是我的一个 View Controller 的类。 import UIKit import Parse import
我遇到了这个问题,我绘制的对象没有出现在 GUI 中。我知道它正在被处理,因为数据被推送到日志文件。但是,图形没有出现。 这是我的一些代码: public static void main(Strin
我有一个树状图,其中包含出现这样的词...... TreeMap occurrence = new TreeMap (); 字符串 = 单词 整数 = 出现次数。 我如何获得最大出现次数 - 整数,
因此,我提示用户输入变量。如果变量小于 0 且大于 10。如果用户输入 10,我想要求用户再次输入数字。我问时间的时候输入4,它说你输入错误。但在第二次尝试时效果很好。例如:如果我输入 25,它会打印
我已经用 css overflow 属性做了一个例子。在这个例子中我遇到了一个溢出滚动的问题。滚动条出现了,但没有工作意味着每当将光标移动到滚动条时,在这个滚动条不活动的时间。我对此一无所知,所以请帮
我现在正在做一个元素。当您单击一个元素时,会出现以下信息,我想知道如何在您单击下一个元素而不重新单击同一元素时使其消失....例如,我的元素中有披萨,我想单击肉披萨看到浇头然后点击奶酪披萨看到浇头和肉
我有一个路由器模块,它将主题与正则表达式进行比较,并将出现的事件与一致的键掩码链接起来。 (它是一个简单的 url 路由过滤,如 symfony http://symfony.com/doc/curr
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: mysql_fetch_array() expects parameter 1 to be resource, bo
我在底部有一个带有工具栏的 View ,我正在使用 NavigationLink 导航到该 View 。但是当 View 出现时,工具栏显示得有点太低了。大约半秒钟后,它突然跳到位。它只会在应用程序启
我试图在我的应用程序上为背景音乐添加一个 AVAudioPlayer,我正在主屏幕上启动播放器,尝试在应用程序打开时开始播放但出现意外行为... 它播放并立即不断创建新玩家并播放这些玩家,因此同时播放
这是获取一个数字,获取其阶乘并将其加倍,但是由于基本情况,如果您输入 0,它会给出 2 作为答案,因此为了绕过它,我使用了 if 语句,但收到错误输入“if”时解析错误。如果你们能提供帮助,我真的很感
暂停期间抛出异常 android.os.DeadObjectException 在 android.os.BinderProxy.transactNative( native 方法) 在 androi
我已经为猜词游戏编写了一些代码。它从用户输入中读取字符并在单词中搜索该字符;根据字符是否在单词中,程序返回并控制一些变量。 代码如下: import java.util.Random; import
我是自动化领域的新手。这是我的简单 TestNG 登录代码,当我以 TestNG 身份运行该代码时,它会出现 java.lang.NullPointerException,双击它会突出显示我导航到 U
我是c#程序员,我习惯了c#的封装语法和其他东西。但是现在,由于某些原因,我应该用java写一些东西,我现在正在练习java一天!我要创建一个为我自己创建一个虚拟项目,以便让自己更熟悉 Java 的
我正在使用 Intellij,我的源类是 main.com.coding,我的资源文件是 main.com.testing。我将 spring.xml 文件放入资源文件中。 我的测试类位于 test.
我想要我的tests folder separate到我的应用程序代码。我的项目结构是这样的 myproject/ myproject/ myproject.py moduleon
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 6 年前。 因此,我尝试比较 2 个值,一个
我是一名优秀的程序员,十分优秀!