Xpath evaluate problème encodage
Bonjour,
Je n'ai pas beaucoup d'expérience en ce domaine c'est pourquoi je fais appel à votre aide.
Je vais simplifier au plus la chose pour être bref:
J'ai un fichier XML qui possède la structure suivante:
Code:
1 2 3 4 5 6 7 8 9 10
| <?xml version="1.0" encoding="UTF-8"?>
...
<variable>
<value>France</value>
</variable>
<variable>
<value>Grèce</value>
</variable>
...
</xml> |
Avec une classe Java, je veux obtenir les valeurs qui se trouvent entre les tags "value". Voilà ma méthode Java pour cela:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
...
final XPath xpath = XPATHFACTORY.newXPath();
String result = "";
final XPathExpression nodesXpath = xpath.compile(xpathQuery);
// Gets the element
final Element nd =
(Element) nodesXpath.evaluate(doc, XPathConstants.NODE);
if (nd != null) {
result = nd.getTextContent();
}
... |
Les valeurs obtenues sont les suivantes:
Code:
1 2
| Value1: France
Value2: Grèce |
Comment faire pour que la valeur "Grèce" soit correctement interprétée?
J'ai déjà le fichier XML sous UTF-8 donc je ne vois pas d'où peut venir le problème...
Merci
Précisions du langage dans les balises CODE
ReBonjour
J'ai modifié mon code et maintenant mon objet Document est bien obtenu à partir d'un File.
Code:
1 2
| final DocumentBuilder docBuilder = DocumentUtil.getNewDocumentBuilder();
final Document doc = docBuilder.parse(new File(filename)) |
Cependant, mon problème d'encodage persiste.
Dans ma méthode je parcours le Document pour obtenir les différentes valeurs et à partir de ces valeurs je veux créer un XSL. Voici une partie du code simplifiée pour mieux comprendre:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| final ByteArrayOutputStream myXmlOutputStream = new ByteArrayOutputStream();
final XMLStreamWriter mywriter = XMLOutputFactory.newInstance().createXMLStreamWriter(xmlOutputStream);
...
final String value = getValue(Element);
mywriter.writeCharacters(name);
mywriter.writeCharacters(value);
mywriter.writeEndElement();
...
java.io.OutputStream outputStream = new java.io.FileOutputStream ("d:/resultat.xslt");
myXmlOutputStream.writeTo(outputStream);
outputStream.close(); |
En faisant "debug" la valeur des "value" obtenues est correcte (les charactères spéciaux sont bien affichés.
Mais le XSL généré dans le fichier resultat.xslt n'est pas correct. Les charactères spéciaux n'apparaissent pas correctement...
Exemple:
Code:
1 2 3 4 5 6 7 8 9
|
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:date="http://exslt.org/dates-and-times">
<xsl:template match="/">
...
<VALUE1>France</VALUE1>
<VALUE2>France</VALUE2>
...
</xsl:template>
</xsl:stylesheet> |
Une idée de comment corriger le problème?
Merci
Citation:
Envoyé par
pjmorce
Merci pour ta réponse.
J'ai fais un debug et mon problème se trouve bien au moment du chargement de l'XML je pense car je sauvegarde le contenu du XML dans une String.
Je vais voir comment faire pour obtenir mon Document XML à partir d'un inputstream...