L'obtention de NullPointerException lors de sa transformation, élément Dom chaîne
Je suis NullPointerException dans le code suivant:
String str = SOME_HTML_STRING;
Node node = convertStrIntoNodeUsingJTidy();
domToString(node);
//converts node to string
public static String domToString(org.w3c.dom.Node node)throws Exception {
try {
StringWriter sw = new StringWriter();
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
//NullPointerException at this line, although node is not null
transformer.transform(new DOMSource(node), new StreamResult(sw));
return sw.toString();
} catch (Exception ex) {
throw new Exception("Error converting to String", ex);
}
}
La stacktrace:
Caused by: javax.xml.transform.TransformerException: java.lang.NullPointerException
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
at com.example.Util.domToString(Util.java:3179)
... 128 more
Caused by: java.lang.NullPointerException
at com.sun.org.apache.xml.internal.serializer.ToXMLStream.processingInstruction(Unknown Source)
at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.processingInstruction(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(Unknown Source)
... 131 more
J'ai déjà vérifié le lien suivant:
http://geekymeeky.blogspot.in/2008/10/javaxxmltransform-transformerexception.html
Le post ci-dessus dit, si un nœud de texte est nul, cette exception se produit.
Je veux savoir, ce que la valeur de la variable str causé le nœud de texte valeur à null et conduire à cette exception.
Et qu'est-ce que
Êtes-vous sûr
C'est ce que je veux savoir. Effectivement l'un de nos client a signalé cette erreur. J'ai essayé tous les scénarios possibles de
J'ai essayé de passer le
SOME_HTML_STRING
?Êtes-vous sûr
node
n'est pas nulle? Essayez d'ajouter assert node != null
avant de se transformer.C'est ce que je veux savoir. Effectivement l'un de nos client a signalé cette erreur. J'ai essayé tous les scénarios possibles de
SOME_HTML_STRING
, mais je ne suis pas en mesure de reproduire l'erreur.J'ai essayé de passer le
node
de la valeur à null
, mais même cela n'est pas dû à la NullPointerException
. C'est pourquoi je suis assez sûr que node
valeur n'est pas nulle.OriginalL'auteur Dheeraj Kumar Aggarwal | 2013-06-11
Vous devez vous connecter pour publier un commentaire.
Comme vous pouvez le voir dans la trace de la pile d'Exception a été lancers lors de l'analyseur d'essayer d'analyser une mauvaise instruction de traitement.
Vous pouvez facilement reproduire avec le code ci-dessous:
ce qui déclenche l'exception presque comme votre.
EDIT:
Exception similaire se produire lorsque vous obtenez des commentaires vides ou textNodes, par exemple:
Il n'est pas courant de la situation, et seulement possible si incorrect/xml endommagé a été passe comme source d'entrée.
voir modifier
Merci beaucoup pour montrer la solution à mon bug. Réglage d'une valeur de texte à
null
doit lever une exception si il n'est pas permis!OriginalL'auteur user1516873