2010-12-10 5 views
0

Dans mon application iPhone, j'ai besoin d'obtenir les données dans un fichier xml. J'utilise TBXML pour le faire.Accéder aux données dans un fichier XML en utilisant TBXML?

Voici le xml (simplifié) que je dois obtenir les données à partir de:

<ResultSet version="1.0"> 
    <Result> 
     <woeid>12792023</woeid> 
    </Result> 
</ResultSet> 

je dois mettre les données woeid dans un NSString. Je suis encore très jeune au XML, et je suis probablement très confus. Voici comment j'essayais d'y accéder. Cela ne fonctionne pas correctement, donc je suppose que je fais tout faux. Aucune suggestion?

Merci d'avance!

--------------------------------------------- -------------------------------------------------- ---------------------

le fichier XML complet est ici:

-<ResultSet version="1.0"> 
    <Error>0</Error> 
    <ErrorMessage>No error</ErrorMessage> 
    <Locale>us_US</Locale> 
    <Quality>99</Quality> 
    <Found>1</Found> 
    −<Result> 
     <quality>72</quality> 
     <latitude>xxxxxxxx</latitude> 
     <longitude>xxxxxxxxx</longitude> 
     <offsetlat>xxxxxxxx</offsetlat> 
     <offsetlon>xxxxxxxxx</offsetlon> 
     <radius>500</radius> 
     <name>xxxxxxxx,xxxxxxx</name> 
     <line1>xxxxx xxx</line1> 
     <line2>xxxx, xx xxxxx</line2> 
     <line3/> 
     <line4>United States</line4> 
     <house/> 
     <street>xxxx xxx</street> 
     <xstreet/> 
     <unittype/> 
     <unit/> 
     <postal>11111</postal> 
     <neighborhood/> 
     <city>xxxxxxx</city> 
     <county>xxxxxxx</county> 
     <state>xxxxxx</state> 
     <country>United States</country> 
     <countrycode>US</countrycode> 
     <statecode>TX</statecode> 
     <countycode/> 
     <hash/> 
     <woeid>11111111</woeid> 
     <woetype>11</woetype> 
     <uzip>xxxxx</uzip> 
    </Result> 
</ResultSet> 

Répondre

1
TBXMLElement *rootXML = XML.rootXMLElement; 
TBXMLElement *e = [TBXML childElementNamed:@"Result" parentElement:rootXML]; 
NSString *woeid = [TBXML textForElement:e->firstChild]; 

childElementNamed renvoie l'élément que vous nommez, donc dans ce cas "Résultat". Vous voulez que le contenu de l'enfant de cet élément

+0

Cela ne fonctionne pas car il sélectionne les données erronées. Permettez-moi de poster tout le fichier XML pour vous dans mon post, peut-être que cela va aider. –

+0

Ok, il semble que votre code sélectionne le premier enfant de "Résultats". Comment puis-je sélectionner un enfant différent plus bas dans la liste? –

+0

Aha, l'ai réparé. Posté dans une réponse. –

1

La réponse était similaire à la réponse de Thomas, donc je vais laisser le sien correct car il m'a aidé à arriver ici. Parce que woeid a été imbriqué dans le XML, vous devez faire ceci:

TBXMLElement *rootXML = XML.rootXMLElement; 
TBXMLElement *results = [TBXML childElementNamed:@"Result" parentElement:rootXML]; 
TBXMLElement *WOEID = [TBXML childElementNamed:@"woeid" parentElement:results]; 
NSString *woeid = [TBXML textForElement:WOEID]; 
Questions connexes