Ich habe dieses XML:
%Vor% Nun, hier ist, was ich versuche zu tun, wenn das Tag-Tag-Attribut gleich Montag ist. Und dann ist das Mahlzeiten-Tag-Attribut gleich BREAKFAST
, dann möchte ich das Attribut des Counters erhalten. "Brot".
Ich habe einen XML-Pull-Parser eingerichtet, aber ich habe Schwierigkeiten, diesen Wert zu bekommen. Hier ist, was ich versucht habe, jetzt sehe ich, dass es nicht funktionieren kann und nicht ... Also jede Hilfe, wie ich es einrichten könnte, wäre großartig.
%Vor%Sie müssten Logik zum Analysieren verschachtelter Tags hinzufügen:
Ein sehr einfaches Beispiel, um Ihnen zu helfen voranzukommen:
Ich habe diesen String analysiert:
<menu><day name=\"monday\"><meal name=\"BREAKFAST\"><meal/><day/></menu>
Code:
%Vor%Sie sehen den Unterschied, richtig?
Ich fügte das im Grunde hinzu, kurz nachdem ich den Tag bekommen hatte, was ich wollte. (In meinem Fall hart codierten String "Monday"
.)
Und basierend auf diesem eventType2
, abgerufen tagName2
, was für "Essen" wäre
Ein besseres Beispiel , damit Sie Ihre Logik auf eine nette Art und Weise schreiben können.
Hoffe, das hilft.
Erstens ist Ihr XML nicht im richtigen Format. Überprüfen Sie auf jeder Website. Sagen Sie auf diesem XML-Validator
Das schließende Tag sollte wie folgt aussehen
& lt; Mahlzeit & gt; & lt; / Mahlzeit & gt;
nicht = & gt; & lt; Essen & gt; & lt; Essen / & gt;
Nach dem Korrigieren von XML als response String unten, Sie können diesen Code ausprobieren, es funktioniert
%Vor%Hoffe das hilft dir bei deinem Problem .. !!!!
Nun, schauen Sie sich logisch Ihre switch-Anweisung an:
%Vor% Sehen Sie das Problem genau dort? Sie werden nicht immer tagName.equals("day")
und tagName.equals("meal")
beide wahr sein! Erhalte das child des xmlData und erhalte seinen Namen, dann führe eine andere if-Anweisung aus.
Sie müssen den Wert von tagName
nach jedem if aktualisieren.
Zunächst fehlen Pausen in Ihrer switch-case-Anweisung. Zweitens werden Attribute immer aus dem Fall START_TAG geparst. Text-Inside-Tags werden im TEXT-Case analysiert und END_TAG ist nützlich, um Objekte oder Arraylists basierend auf ihrer Verschachtelung zu erstellen.
onProgressUpdate muss so aussehen:
%Vor%Zuerst ist dein XML defekt, sieh dir die End-Tags an. Sollte sein:
%Vor%
Zweitens sollten Sie nicht einen Pull-Parser verwenden, Sie verwenden viele Codezeilen, aber es gibt kürzere Wege zu Ihrem Ziel (zB XMLBeam ( Offenlegung: Ich bin mit diesem Projekt verbunden )):
%Vor%}
Tags und Links java arrays android android-xmlpullparser xmlpullparser