{"id":2136,"date":"2012-06-10T15:45:09","date_gmt":"2012-06-10T13:45:09","guid":{"rendered":"http:\/\/blog.unelink.es\/?p=2136"},"modified":"2012-06-11T10:23:33","modified_gmt":"2012-06-11T08:23:33","slug":"formatear-documento-xml-desde-java","status":"publish","type":"post","link":"https:\/\/hosting.airetech.es\/blog\/wiki\/formatear-documento-xml-desde-java\/","title":{"rendered":"Formatear documento XML desde Java"},"content":{"rendered":"<p>A continuaci\u00f3n podemos ver una clase de uso est\u00e1tico con la que podremos formatear nuestros documentos XML para poderlos leer m\u00e1s f\u00e1cilmente:<\/p>\n<pre>\r\nimport java.io.StringReader;\r\nimport java.io.StringWriter;\r\nimport java.io.Writer;\r\n<br \/>\r\nimport javax.xml.parsers.DocumentBuilder;\r\nimport javax.xml.parsers.DocumentBuilderFactory;\r\n<br \/>\r\nimport org.w3c.dom.Document;\r\nimport org.xml.sax.InputSource;\r\n<br \/>\r\nimport com.sun.org.apache.xml.internal.serialize.OutputFormat;\r\nimport com.sun.org.apache.xml.internal.serialize.XMLSerializer;\r\n<br \/>\r\n<br \/>\r\npublic class FormateadorXML\r\n{\r\n&nbsp;&nbsp;&nbsp;&nbsp;private static final int TABULADO = 4;\r\n&nbsp;&nbsp;&nbsp;&nbsp;private static final int ANCHO_LINEA = 120;\r\n<br \/>\r\n&nbsp;&nbsp;&nbsp;&nbsp;public static final String formatear(String xml)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String retorno = null;\r\n<br \/>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final Document documento = parseXmlFile(xml);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutputFormat format = new OutputFormat(documento);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;format.setLineWidth(ANCHO_LINEA);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;format.setIndenting(true);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;format.setIndent(TABULADO);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writer salida = new StringWriter();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLSerializer serializer = new XMLSerializer(salida, format);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serializer.serialize(documento);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retorno = salida.toString();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (Exception e)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retorno = null;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n<br \/>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return retorno;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n<br \/>\r\n&nbsp;&nbsp;&nbsp;&nbsp;private static final Document parseXmlFile(String entrada)\r\n&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document retorno = null;\r\n<br \/>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilder db = dbf.newDocumentBuilder();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputSource is = new InputSource(new StringReader(entrada));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retorno = db.parse(is);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (Exception e)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retorno = null;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n<br \/>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return retorno;\r\n&nbsp;&nbsp;&nbsp;&nbsp;}\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"A continuaci\u00f3n podemos ver una clase de uso est\u00e1tico con la que podremos formatear nuestros documentos XML para poderlos leer m\u00e1s f\u00e1cilmente: import java.io.StringReader; import java.io.StringWriter; import java.io.Writer; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.xml.sax.InputSource; import com.sun.org.apache.xml.internal.serialize.OutputFormat; import com.sun.org.apache.xml.internal.serialize.XMLSerializer; public class FormateadorXML { &nbsp;&nbsp;&nbsp;&nbsp;private static final int TABULADO = 4; &nbsp;&nbsp;&nbsp;&nbsp;private static final int ANCHO_LINEA = 120; &nbsp;&nbsp;&nbsp;&nbsp;public static&nbsp;<a href=\"https:\/\/hosting.airetech.es\/blog\/wiki\/formatear-documento-xml-desde-java\/\" class=\"read-more\">Seguir leyendo<\/a>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[123,6],"tags":[124,128],"class_list":["post-2136","post","type-post","status-publish","format-standard","hentry","category-java","category-wiki","tag-java-2","tag-xml","cat-123-id","cat-6-id"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/hosting.airetech.es\/blog\/wp-json\/wp\/v2\/posts\/2136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hosting.airetech.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hosting.airetech.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hosting.airetech.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hosting.airetech.es\/blog\/wp-json\/wp\/v2\/comments?post=2136"}],"version-history":[{"count":21,"href":"https:\/\/hosting.airetech.es\/blog\/wp-json\/wp\/v2\/posts\/2136\/revisions"}],"predecessor-version":[{"id":2187,"href":"https:\/\/hosting.airetech.es\/blog\/wp-json\/wp\/v2\/posts\/2136\/revisions\/2187"}],"wp:attachment":[{"href":"https:\/\/hosting.airetech.es\/blog\/wp-json\/wp\/v2\/media?parent=2136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hosting.airetech.es\/blog\/wp-json\/wp\/v2\/categories?post=2136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hosting.airetech.es\/blog\/wp-json\/wp\/v2\/tags?post=2136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}