/ / jak parsować plik XML? [duplicate] - iphone, xcode, nsxmlparser, xml

jak parsować plik XML? [duplicate] - iphone, xcode, nsxmlparser, xml

Możliwe duplikaty:
NSXMLParser na iPhone, w jaki sposób mogę go użyć podając plik xml (newb tutaj :)
Cocoa / Objective-C: Najlepsze praktyki do parsowania dokumentu XML?

Chcę sparsować plik XML w aplikacji Cocoa.Aut nie parser dla xml działa również. Proszę pomóc w parsowaniu tego pliku lub innych plików xml w ten sposób. Dzięki ... Mój plik Xml jest pod:

  <book name="Genesis">
<chapter number="1">
<verse number="1">At the first God made the heaven and the earth.</verse>
<verse number="2">And the earth was waste and without form; and it was dark on the face of the deep: and the Spirit of God was moving on the face of the waters.</verse>
<verse number="3">And God said, Let there be light: and there was light.</verse>
</chapter>
</book>
<book name="Genesis">
<chapter number="1">
<verse number="1">At the first God made the heaven and the earth.</verse>
<verse number="2">And the earth was waste and without form; and it was dark on the face of the deep: and the Spirit of God was moving on the face of the waters.</verse>
<verse number="3">And God said, Let there be light: and there was light.</verse>
</chapter>
</book>

Odpowiedzi:

1 dla odpowiedzi № 1

Istnieją efektywnie dwa podejścia do analizowania XML - oparty na zdarzeniach (taki jak ten używany przez NSXMLParser) i podejście do drzewa (takie jak używane przez NSXML).

Jeśli jesteście tylko po określonych elementach, to toPrawdopodobnie byłoby o wiele łatwiej użyć metody drzewa używanej przez NSXML, ponieważ pozwala ona na wysyłanie zapytań do dokumentów XML przy użyciu XPath (a nawet XQuery) w celu zwrócenia określonych węzłów itp., którymi jesteś zainteresowany.

Jeśli brzmi to tak, jakby to było bardziej owocne podejście, które za pomocą NSXMLParser do iteracji na całej struktury, to polecam czytanie Wprowadzenie do programowania opartego na drzewie XML dla kakao. (Szczególnie interesujące powinno być sekcja "Querying a XML Document").


0 dla odpowiedzi nr 2
   - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
if ([elementName isEqualToString:@"book"])
{
item = [[NSMutableDictionary alloc] init];

item_name = [[NSMutableString alloc] initWithString:[attributeDict valueForKey:@"name"]];
}

// następnie w item_name masz wartość jako Genesis
// spróbuj tak parsować
EDYCJA: po obejrzeniu komentarza

 if ([elementName isEqualToString:@"verse"])
{

item_name1 = [[NSMutableString alloc] initWithString:[attributeDict valueForKey:@"number"]];
}

// W item_name1 otrzymasz wartość jako 1