2009-03-28 11 views
5

Para leer XML, hay SAX y DOM integrados en Java 1.5. Puede usar JAXP y no necesita saber detalles sobre qué analizador está disponible ... Entonces, ¿cuáles son algunas API prescritas para uno a escribir documentos XML en Java 1.5 y versiones anteriores?Lectura y escritura de XML utilizando JUST Java 1.5 (o anterior)

  • no quiero utilizar un tercero binaria
  • que no quieren asumir una VM de Sun o IBM VM, etc y usar alguna clase especializada
  • Lo que significa que no es de escribir el documento , Me gustaría leer de forma complementaria.
  • rendimiento y la idoneidad para grandes archivos XML no es particularmente importante

Idealmente, una lectura y escritura sin cambios está a sólo unas pocas líneas de código.

+0

¿Necesita controlar el esquema xml, o todo lo que está escrito está bien, siempre que sea XML y pueda volverse a leer mediante el mismo proceso al revés? – TofuBeer

+0

Sí, me importa el esquema. ¿Estás pensando en la serialización XML? –

Respuesta

5

Java 1.4 viene con javax.xml.transform, que puede tomar un DOMSource, SAXSource, etc:

// print document 
InputSource inputSource = new InputSource(stream); 
Source saxSource = new SAXSource(inputSource); 
Result result = new StreamResult(System.out); 
TransformerFactory transformerFactory = TransformerFactory 
    .newInstance(); 
Transformer transformer = transformerFactory 
    .newTransformer(); 
transformer.transform(saxSource, result); 

Si desea volver a la API de J2SE 1.3, que está bastante por su cuenta (aunque si estás en la API J2EE de esa época, puede haber algo, no lo recuerdo).

+0

Esta es exactamente la respuesta correcta para la pregunta que escribí. Pero en retrospectiva, la pregunta es engañosa. Quiero crear un montón de contenido nuevo; No estoy seguro de cómo uno crea contenido nuevo usando un transformador ... –

+0

Comenzaría una nueva pregunta con un ejemplo de los datos de entrada y el resultado que desea producir a partir de él. – McDowell

+0

Además, cómo usar un transformador: http://java.sun.com/webservices/reference/tutorials/jaxp/html/xslt.html Sin embargo, no está claro si necesita todo eso. – McDowell

0

No hay API oficial "prescrito", pero hemos estado muy contento con la siguiente técnica:

crear una clase XmlWriter que inicializa con un carácter Writer y tiene métodos como startElement(String name), writeAttribute(String name, String value) y writeCData(String text).

Luego implemente de la manera obvia. Los métodos internos pueden hacer cosas como el escape de caracteres SGML; vea Apache Commons para las utilidades que ayudarán.

Si desea que la salida sea más legible, puede hacer cosas como el nivel de anidación del elemento de seguimiento y agregar nuevas líneas y pestañas o espacios. También es opcional rastrear elementos como un elemento que se abre y cierra sin nada dentro, que se puede abreviar como <element/>.

Cuestiones relacionadas