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.
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á.