2010-12-28 5 views
2

Ich versuche, diese XML-Datei für ein Schulprojekt zu analysieren: http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/topsongs/limit=10/genre=20/xml.NSXMLParser, zwei gleiche Elemente Hilfe!

Mein Problem ist, dass ich versuche, den Albumnamen zu bekommen, der hier ist: <im:collection><im:name> hier. Es gibt jedoch zwei Elemente, die <im:name> genannt werden. Die erste ist in der <entry>, und die zweite ist in der <im:collection>.

Wie kann ich die Informationen von der zweiten <im:name> bekommen?

+0

Bearbeiten Sie Ihre Frage so, dass die markierten Elemente tatsächlich in der Frage erscheinen. "Das ist hier drin: hier. Allerdings werden zwei Elemente genannt." ist nicht sehr nützlich. Ich würde die Frage bearbeiten, wenn ich könnte, aber ich habe diese Privilegien noch nicht. –

+0

@Philip: Bearbeitet. –

+0

@Evan, danke. Ich bin nicht an die Codeformatierung hier gewöhnt! Es ist mein erster Beitrag übrigens! –

Antwort

4

Sie werden das Problem die ganze Zeit mit XML laufen, da ein Tag mehrmals in mehreren Eltern erscheinen kann. Die Art, wie ich dies nachverfolge, besteht darin, das übergeordnete Tag zu verfolgen. Also, in der Unterklasse NSXMLParser behaupte ich zwei Eigenschaften:

NSString *currentTag; 
NSString *parentTag; 

In parser:didStartElement:namespaceURI:qualifiedName:attributes: ich fülle sie:

parentTag = currentTag; 
currentTag = elementName; 

Und in parser:foundCharacters: ich mein Datenmodell fülle nach dem übergeordneten Tag Ich bin zur Zeit in ...

Salz nach Geschmack hinzufügen.

+0

Ihnen, Sir, schulden Sie ein großes Dankeschön! Vielen Dank!! –

0

In jedem XML-Parsing, das einen Pull-Parser verwendet (behandelt Tag-Ereignisse, statt durch das DOM zu navigieren), müssen Sie irgendwo eine Art Variable einrichten, die verfolgt, wo Sie sich im Dokument befinden ein Teilbaum des XML, der denselben Namen wie Elemente in anderen Teilbäumen hat.

In Ihrem Fall, da Sie wissen, dass Sie Namen unter Sammlung wollen, müssen Sie auch nach dem Sammlungs-Tag suchen und verfolgen, wann Sie es eingegeben und verlassen haben - also dann, wenn Sie zum Namensschild kommen, verarbeiten Sie es nur wenn Sie auch in der Sammlung sind.