{"id":290,"date":"2009-11-13T15:11:18","date_gmt":"2009-11-13T20:11:18","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/taws\/?p=290"},"modified":"2015-11-21T15:11:56","modified_gmt":"2015-11-21T20:11:56","slug":"parsear-xml-en-java","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/taws\/2009\/11\/13\/parsear-xml-en-java\/","title":{"rendered":"Parsear XML en Java"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-355\" src=\"http:\/\/blog.espol.edu.ec\/taws\/files\/2009\/11\/java-xml.jpg\" alt=\"\" width=\"100\" height=\"120\" \/>Para los que quieran parsear un xml en java les facilito el codigo necesario, como observacion el xml no sera un archivo guardado sino que sera recibido como un String.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>1. imports necesarios (Fundamental)<\/strong><br \/>\n<code><br \/>\nimport java.io.ByteArrayInputStream;<br \/>\nimport java.io.IOException;<br \/>\nimport javax.xml.parsers.DocumentBuilder;<br \/>\nimport javax.xml.parsers.DocumentBuilderFactory;<br \/>\nimport org.w3c.dom.Document;<br \/>\nimport org.w3c.dom.Element;<br \/>\nimport org.w3c.dom.NodeList;<br \/>\n<\/code><br \/>\n<strong>2. Funcion que recibe un String y lo convierte en un objeto Document<\/strong><br \/>\n<code><br \/>\npublic Document string2DOM(String s){<\/code><\/p>\n<p><!--more--><\/p>\n<p>Document tmpX=null;<br \/>\nDocumentBuilder builder = null;<\/p>\n<p>try{<br \/>\nbuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();<br \/>\n}catch(javax.xml.parsers.ParserConfigurationException error){<br \/>\nint coderror=10;<br \/>\nString msgerror=\"Error crando factory String2DOM \"+error.getMessage();<br \/>\nreturn null;<br \/>\n}<br \/>\ntry{<\/p>\n<p>tmpX=(Document)builder.parse(new ByteArrayInputStream(s.getBytes()));<\/p>\n<p>}catch(org.xml.sax.SAXException error){<br \/>\nint coderror=10;<br \/>\nString msgerror=\"Error parseo SAX String2DOM \"+error.getMessage();<br \/>\nreturn null;<br \/>\n}catch(IOException error){<br \/>\nint coderror=10;<br \/>\nString msgerror=\"Error generando Bytes String2DOM \"+error.getMessage();<br \/>\nreturn null;<br \/>\n}<br \/>\nreturn tmpX;<br \/>\n}<\/p>\n<p><strong>3. Funcion que recibe el un nodo y devuelve el contenido de algun tag interno especificando el tagName<br \/>\n<\/strong><br \/>\n<code><br \/>\nprivate\u00a0 String getTextValue(Element ele, String tagName) {<br \/>\nString textVal = null;<br \/>\nNodeList nl = ele.getElementsByTagName(tagName);<br \/>\nif(nl != null &amp;&amp; nl.getLength() &gt; 0) {<br \/>\nElement el = (Element)nl.item(0);<br \/>\ntextVal = el.getFirstChild().getNodeValue();<br \/>\n}<\/code><\/p>\n<p>return textVal;<br \/>\n}<\/p>\n<p>Ejemplo:<\/p>\n<p>&lt;persona&gt;<\/p>\n<p>&lt;nombre&gt;Ana&lt;\/nombre&gt;<\/p>\n<p>&lt;\/persona&gt;<\/p>\n<p>docEle-&gt;es el objeto tag persona, piensa en el objeto tag como lo manejas en javascript<\/p>\n<p>para sacar el nombre escribirias: getTextValue(docEle,\"nombre\");<\/p>\n<p><strong>4. Como usar todo junto<\/strong><br \/>\n<code><br \/>\nString xml=\"&lt;persona&gt;&lt;nombre&gt;Ana&lt;\/nombre&gt;&lt;telefono&gt;2673353&lt;\/telefono&gt;&lt;telefono&gt;2234456&lt;\/telefono&gt;&lt;\/persona&gt;\";<\/code><\/p>\n<p>Document doc=string2DOM(xml);<br \/>\nElement docEle=doc.getDocumentElement();<\/p>\n<p>\/\/para obtener el nombre<\/p>\n<p>String nombre=getTextValue(docEle,\"nombre\");<\/p>\n<p>\/\/para obtener telefonos<\/p>\n<p>NodeList nl = docEle.getElementsByTagName(\"telefono\");<br \/>\nif(nl != null &amp;&amp; nl.getLength() &gt; 0) {<br \/>\nfor(int i = 0 ; i &lt; nl.getLength();i++) {<\/p>\n<p>\/\/get the employee element<br \/>\nElement el = (Element)nl.item(i);<br \/>\nString telefono=el.getFirstChild().getNodeValue();<\/p>\n<p>nl.add(telefono);<\/p>\n<p>}<br \/>\n}<\/p>\n<p>El modo en que se maneja el xml es muy parecido a que si lo hicieras en javascript. Espero les sirva<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para los que quieran parsear un xml en java les facilito el codigo necesario, como observacion el xml no sera un archivo guardado sino que sera recibido como un String. &nbsp; 1. imports necesarios (Fundamental) import java.io.ByteArrayInputStream; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; 2. Funcion que recibe un String [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":355,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[2525,5362,14823,14839,14840,297,14,800],"class_list":["post-290","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web","tag-codigo","tag-java","tag-parsear-xml","tag-parsing","tag-poo","tag-programacion","tag-taws","tag-xml"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/posts\/290","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/comments?post=290"}],"version-history":[{"count":9,"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/posts\/290\/revisions"}],"predecessor-version":[{"id":633,"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/posts\/290\/revisions\/633"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/media\/355"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/media?parent=290"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/categories?post=290"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/taws\/wp-json\/wp\/v2\/tags?post=290"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}