I want to create a XML where blanks are replaced by  
. But the Java-Transformer escapes the Ampersand, so that the output is  
Here is my sample code:
public class Test {
public static void main(String[] args) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.newDocument();
Element element = document.createElement("element");
element.setTextContent(" ");
document.appendChild(element);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
StreamResult streamResult = new StreamResult(stream);
transformer.transform(new DOMSource(document), streamResult);
System.out.println(stream.toString());
}
}
And this is the output of my sample code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<element>&#160;</element>
Any ideas to fix or avoid that? thanks a lot!
Use output escaping as follows:
Node disableEscaping = document.createProcessingInstruction(StreamResult.PI_DISABLE_OUTPUT_ESCAPING, "&");
Element element = document.createElement("element");
element.setTextContent(" ");
document.appendChild(disableEscaping );
document.appendChild(element);
Node enableEscaping = document.createProcessingInstruction(StreamResult.PI_ENABLE_OUTPUT_ESCAPING, "&");
document.appendChild(enableEscaping )
Set the text content directly to the character you want, and the serializer will escape it for you if necessary:
element.setTextContent("\u00A0");
Try to use
element.appendChild (document.createCDATASection (" "));
instead of
element.setTextContent(...);
You'll get this in your xml: It may work if I understand correctly what you're trying to do.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With