Java XML Parsing: Evite la resolución de referencia de la entidad

Actualmente estoy analizando documentos XHTML con un analizador DOM, como:

final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(false);

final DocumentBuilder db = dbf.newDocumentBuilder();
db.setEntityResolver(MY_ENTITY_RESOLVER);
db.setErrorHandler(MY_ERROR_HANDLER);
...
final Document doc = db.parse(inputSource);

Y mi problema es que cuando mi documento contiene una referencia de entidad como, por ejemplo:

<p>&euro;</p>

Mi analizador crea un nodo de texto para ese contenido que contiene "€" en lugar de "& euro;". Esto es, está resolviendo la entidad en la forma en que se supone que lo hace (la DTD XHTML 1.0 estricta se vincula a la DTD ENTIDADES Latin1, que a su vez establece la equivalencia de "& euro;" con "€").

El problema es que no quiero que el analizador haga tal cosa. @ Me gustaría mantener el "& euro;" texto sin modificar.

Ya he probado con:

final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setExpandEntityReferences(false);

Pero

No me gusta esto porque me temo que esto podría hacer que algunas implementaciones de analizador no seannavega desde la DTD estricta XHTML 1.0 a la DTD ENTIDADES Latin1 y, por lo tanto, no se considera "& euro;" como undeclarad entidad.

Cuando hago esto, extrañamente crea dos nodos: un nodo de entidad "libra" y un nodo de texto con el símbolo "€" después de él.

¿Algunas ideas ¿Es posible configurar esto en un analizador DOM sin recurrir a preprocesamiento el XHTML y sustituyendo todos los símbolos "&" por algo diferente? ...

Solutions podría ser para un analizador DOM o también uno SAX, no me importaría usar el análisis SAX y luego crear mi DOM utilizando una transformación ...

Además, no puedo cambiar a una biblioteca de análisis XML no estándar. Sin jdom, sin jsoup, sin HtmlCleaner, etc.

Muchas gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta