Есть один более простой способ. Сначала используйте пользовательскую escape-последовательность:
m.setProperty(CharacterEscapeHandler.class.getName(), new CharacterEscapeHandler() {
@Override
public void escape(char[] ch, int start, int length, boolean isAttVal, Writer out) throws IOException {
out.write( ch, start, length );
}
});
Затем поместите его в строку, как указано ниже
StringWriter writer = new StringWriter();
m.marshal(marshalObject, writer);
, а затем создайте объект документа из автора, упомянутого ниже
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource( new StringReader( writer.toString() ) );
Document doc = builder.parse( is );
проблема с escape-символами будет решена