he creado una aplicación Java que se abre un archivo XML que se ve algo como esto:archivo XML Abierto de res/xml en Android
<AnimalTree>
<animal>
<mammal>canine</mammal>
<color>blue</color>
</animal>
<!-- ... -->
</AnimalTree>
Y puedo abrirlo usando:
File fXmlFile = getResources.getXml("res/xml/data.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
NodeList animalNodes = doc.getElementsByTagName("animal");
Entonces Simplemente puedo crear un nodo, insertar el objeto en un ListArray y luego hacer lo que quiero con los objetos mientras recorro ListArray.
for (int temp = 0; temp < animalNodes.getLength(); temp++) {
Node nNode = animalNodes.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
question thisAnimal = new animal();
thisAnimal.mammal = getTagValue("mammal",eElement);
// ...
Así de simple! Ahora solo, en Android no puedo simplemente leer el archivo "res/xml/data.xml
" porque "File();
" requiere un String
no un integer
(id). Aquí es donde estoy perdido. ¿Hay alguna forma en que pueda hacer que "File();
" abra el archivo, o es imposible sin usar SAXparser
o XPP
? (ambos de los cuales realmente no puedo entender, no importa cuánto lo intente).
Si me veo forzado a usar esos métodos, ¿alguien me puede mostrar un código simple análogo a mi ejemplo?
Yo no lo entiendo? ¿Cambio luego a una cadena y pongo eso en "Archivo()"? ? El recurso de IBM que dejó muestra cómo sacar xml de en línea sin problemas. No entiendo por qué esto es tan difícil? ¿Puedes crear una versión de pseudo código de lo que publiqué arriba? Gracias. – jeremy
@jeremy: respuesta actualizada – jcollum
Eso es mejor y lo vi en el sitio de IBM, pero "getInputStream();" está en la clase BaseFeedParser, que "implementa" la clase FeedParser que no figura en el sitio de IBM. Creé la clase BaseFeedParser en mi código, pero eclipse me está arrojando un error sobre FeedParser. – jeremy