Öffnen Sie die XML-Datei aus dem res/xml in Android
Erstellte ich eine Java-Anwendung, die eine xml-Datei öffnen, dass wie folgt aussieht:
<AnimalTree>
<animal>
<mammal>canine</mammal>
<color>blue</color>
</animal>
<!-- ... -->
</AnimalTree>
Und ich kann öffnen Sie es mit:
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");
Dann kann ich Sie einfach erstellen Sie einen Knoten, dann schieben Sie das Objekt in ein ListArray, dann tun, was ich will, mit dem Objekte so, wie ich eine Schleife durch die 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);
//...
Schlicht und einfach! Jetzt nur noch, bei Android kann ich nicht einfach Lesen Sie die Datei "res/xml/data.xml
", weil "File();
" erfordert eine String
keine integer
(id). Dies ist, wo ich bin verloren. Gibt es eine Möglichkeit, die ich machen kann "File();
" öffnen Sie die Datei, oder ist dies unmöglich, ohne die Verwendung SAXparser
oder XPP
? (beide von denen ich wirklich nicht verstehen kann, egal wie sehr ich es versuchen.)
Wenn ich gezwungen bin, diese zu benutzen, Methoden, kann mir jemand zeigen einige einfache code Analog zu meinem Beispiel?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn es im Ressourcen-Baum, es wird eine ID zugewiesen, so dass Sie können öffnen Sie einen stream, um es mit den openRawResource Funktion:
InputStream is = context.getResources().openRawResource(R.xml.data);
Als für die Arbeit mit XML in Android, diesen link auf ibm.com ist unglaublich gründlich.
Sehen
Listing 9. DOM-based implementation of feed parser
im link.Sobald Sie die Eingabe-stream (oben) können Sie übergeben es an eine Instanz von DocumentBuilder:
Halten Sie im Verstand, ich habe nicht getan, diese persönlich-ich gehe davon aus, dass der code von IBM arbeitet.
public interface FeedParser
SAXParserFactory factory = SAXParserFactory.newInstance();
openRawResource(R.xml.data)
wird derzeit geben Sie ein lint-Fehler in Android-Studio: "Erwartet, dass die Ressource mit dem Typ raw". StattdessengetXml()
(siehe BfD-Antwort).Habe ich versucht, den Ansatz mit openRawResource und bekam eine SAXParseException. Also, statt, die ich verwendet, getXml zu bekommen XmlPullParser. Ich habe dann next (weiter), um Schritt für Schritt durch die Analyse Veranstaltungen. Die eigentliche Datei ist res/xml/dinosaurs.xml.
Versuchen, diese,