2011-02-25 18 views
13

¿Cuál es la forma más fácil de hacer una forma canónica de un archivo XML en Java? ¿Tienes algún código hecho para eso? He encontrado varios enlaces en la red, como this, this, y this, pero no puedo hacer que funcione:/Java: canonicalización XML

Gracias,

Ivan

EDIT: He utilizado el canonicalizer eso fue propuesto allí abajo, pero obtengo resultados extraños. Para ser más precizē, este método no elimina los espacios en blanco entre los elementos ... Esto es lo que me sale:

<Metric xmlns="http://www.ibm.com/wsla" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="total_memory_consumption_metric" type="double" unit="Mbit" xsi:schemaLocation="http://www.ibm.com/wsla WSLA.xsd">      <Source>ServiceProvider</Source>      <MeasurementDirective resultType="double" xsi:type="StatusRequest">        <RequestURI> ***unused*** </RequestURI>      </MeasurementDirective>     </Metric> 
+0

Mismo problema, ¿logró resolverlo ahora? – Kwoinkwoin

Respuesta

17

La clase Canonicalizer en Apache XML Security project:

Canonicalizer canon = Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS); 
byte canonXmlBytes[] = canon.canonicalize(yourXmlBytes); 
String canonXmlString = new String(canonXmlBytes); 
+13

Para cualquier persona que no haya trabajado anteriormente con la biblioteca Apache XML Security, debe inicializar la biblioteca utilizando el método estático "org.apache.xml.security.Init.init();" antes de invocar cualquier código de esa biblioteca, o obtendrá un error. – Stew

+0

El punto @Stew hace es bastante importante. Realmente debería ser parte de la respuesta en sí. – aroth