Bonjour,

Je dispose d'un document XML déjà encodé en XML
J'entends par là qu'un noeud de type text (un noeud terminal) peut avoir pour valeur &#123 (pour encoder le é par ex.)
Lorsque ce document XML (sous forme d'une String) passe dans la moulinette d'un transformer (je cherche à fusionner cette String XML avec une autre, d'où la nécessité d'un transformer), il en ressort un document qui "unescape" le XML (le &#123 redevient le é)
Je ne veux pas ! car la sortie est dédié à une page web (XHTML).

Voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
Simulator lSimulator = simulatorPersistence
					.findByPrimaryKey( pIdSimulator );
			String lDataXml = getXMLData( pIdSimulator, pEncodeHtml );
			String lConfigXml = getXMLConfig( lSimulator.getType(),
					pJsonConfigObj );
 
			//ajoute la config xml
			DocumentBuilderFactory lDocFactory = DocumentBuilderFactory
					.newInstance();
			DocumentBuilder parser = lDocFactory.newDocumentBuilder();
			Document lDataDocument = parser.parse( new InputSource(
					new StringReader(
 
					lDataXml ) ) );
			Document lConfigDocument = parser.parse( new InputSource(
					new StringReader( lConfigXml ) ) );
			Document lXML = parser.newDocument();
			lXML.createProcessingInstruction(
					Result.PI_DISABLE_OUTPUT_ESCAPING, "" );
			DocumentFragment fragment = lXML.createDocumentFragment();
			fragment.appendChild( lXML.importNode(
					lConfigDocument.getDocumentElement(), true ) );
 
			//append data root elt
			lXML.appendChild( lXML.importNode(
					lDataDocument.getDocumentElement(), true ) );
			//append config elt
			lXML.getDocumentElement().insertBefore( fragment,
					lXML.getDocumentElement().getFirstChild() );
 
			//document to string
			Source source = new DOMSource( lXML );
			StringWriter stringWriter = new StringWriter();
			Result result = new StreamResult( stringWriter );
			TransformerFactory ff = TransformerFactory.newInstance();
 
			//J'ai essaié ça ci-dessous mais ca fait planter
						ff.setAttribute( Result.PI_DISABLE_OUTPUT_ESCAPING, Boolean.TRUE );
			Transformer transformer = ff.newTransformer();
			transformer.setOutputProperty( OutputKeys.OMIT_XML_DECLARATION,
					"yes" );
			transformer.transform( source, result );
			return stringWriter.getBuffer().toString();
Merci de votre aide.