Je veux transformer un XML avec XSLT en Java. Pour cela, j'utilise le Notez que j'ai marqué la ligne qui jette l'exception. P> Lorsque je saisi la méthode, la valeur de javax.xml.transform code> package. Cependant, je reçois l'exception
javax.xml.transform.transformerConfigurationException: impossible de compiler stylesheet code>. C'est le code que j'utilise:
Xsltrule code> est-ce: p>
3 Réponses :
Le Constructeur
ByteArrayOutputStream baos = new ByteArrayOutputStream(); Result result = new StreamResult(baos); transformer.transform(xmlInput, result); return baos.toString();
Alternativement, changez simplement Nouveau StreamSource (Xsltrule) CODE> TO
Nouveau StreamSource (New StringReader (Xsltrule)) Code>
Merci beaucoup! Mais j'ai toujours un problème avec le résultat du résultat = nouveau streamressionult (); code>. Ce qu'il faut y faire?
@IVan: Quel problème avez-vous avec le résultat de résultat = nouveau streamression (); code>?
@Michael pour la ligne transformer.transform code> i Obtenir cette exception:
javax.xml.transform.transformerexception: objet de résultat transmis à '' {0} 'est invalide. Code> i a fait la même chose pour la variable XML que pour Xsltrule.
@Ivan: Je vois: J'ai modifié ma réponse pour résoudre ce problème aussi.
Vous devrez construire un flux de la chaîne XSLT que vous avez, puis l'utiliser comme source de flux pour obtenir le résultat à une chaîne: p> ByteArrayOutputStream bos = new ByteArrayOutputStream();
Result result = new StreamResult(bos);
transformer.transform(xmlInput, result);
String s = new String(bos.toByteArray());
System.out.println(s);
Merci beaucoup! Mais j'ai toujours un problème avec le résultat du résultat = nouveau streamressionult (); code>. Ce qu'il faut y faire?
Pour utiliser XSLTC, mettre xalan.jar (2.5), Serializer.jar, XML-Apis.jar et Xercesimpl.jar sur votre path de classe. P>
Ne fais pas ça. Tous ces forfaits (du projet XERSES) ont été abandonnés depuis 2010. Le code vit désormais dans la JVM.
Quelle exception as-tu attrapé?
Il est
javax.xml.transform.transformerConfigurationException code>. J'ai édité mon post original, c'est là maintenant.
Pourquoi votre dernier modèle est vide?
Parce que cet élément doit être supprimé. Il trouve l'élément, mais ne le copie pas. Ce XSLT devrait fonctionner, je l'ai déjà utilisé pendant que je travaillais dans .NET.