Mostrando entradas con la etiqueta java. Mostrar todas las entradas
    Mostrando entradas con la etiqueta java. Mostrar todas las entradas

    jueves, 31 de enero de 2008

    Parseando un XML en Java

    Tengo que parsear unos cuantos XML. Por lo que veo los XML van a ser muy muy simples, no van a formar ramificaciones raras y van a venir construidos. Básicamente quería un código sencillo para coger el valor de un campo de un XML.

    Para este menester parece que se recomienda utilizar DOM en vez de SAX...(*) no me he metido mucho en las diferencias entre ambos, sencillamente he ido a por un código que me funcione:



    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

    //Using factory get an instance of document builder
    DocumentBuilder db = dbf.newDocumentBuilder();
    //parse using builder to get DOM representation of the XML file
    dom = db.parse(xmlDoc.getStream());

    Element docEle = dom.getDocumentElement();
    NodeList nl = docEle.getElementsByTagName("Id");
    if (nl != null && nl.getLength() == 1) {
    Element item = (Element) nl.item(0);
    String id = item.getFirstChild().getNodeValue();
    }



    syntax highlighted by Code2HTML, v. 0.9.1


    Los pasos son:
    • Obtener una instancia de "document builder"
    • Parsear el texto. En mi caso me venía bien un InputStream.
    • Acceder al elemento "documento", que es el documento en sí mismo.
    • Pedirle la tag a la que queremos acceder.
    • Ir leyendo lo que nos han devuelto y tratarlo apropiadamente.
    Este enlace me fue de gran utilidad.

    Act: Me comenta Sebas que no... que es más eficiente SAX pero que al usar una aproximación por callbacks puede resultar extraño. En fin, lo hecho, hecho está.

    martes, 6 de noviembre de 2007