2010-12-10 3 views
0

В моем приложении iPhone мне нужно получить данные в XML-файле. Я использую TBXML для этого.Доступ к данным в XML с использованием TBXML?

Вот XML-(упрощенный), что мне нужно, чтобы получить данные из:

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

Мне нужно поместить данные в woeid в NSString.

Я по-прежнему очень новичок в XML, и я, вероятно, очень смущен. Вот как я пытался получить к нему доступ.

//locationString is a NSString containing a URL of a XML file 
TBXML * XML = [[TBXML tbxmlWithURL:[NSURL URLWithString:locationString]] retain]; 
TBXMLElement * rootXML = XML.rootXMLElement; 
NSString *WOEID = [TBXML textForElement:[TBXML childElementNamed:@"Result" parentElement:rootXML]]; 

Это не работает правильно, поэтому я предполагаю, что все делаю неправильно. Какие-либо предложения?

Заранее благодарен!

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

полный файл XML здесь:

-<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> 

ответ

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

childElementNamed возвращает элемент, вы называете, поэтому в этом случае «Результат». Вы хотите, чтобы содержание ребенка этого элемента

+0

Он не работает, так как он выбирает неправильные данные. Позвольте мне опубликовать весь XML-файл для вас выше в моем сообщении, возможно, это поможет. –

+0

Хорошо, похоже, ваш код выбирает первого ребенка из «Результаты». Как я могу выбрать другого ребенка дальше по списку? –

+0

Ага, это исправлено. Отправил его в ответ. –

1

Ответ был похож на ответ Томаса, поэтому я оставлю его правильным, потому что он помог мне добраться сюда. Поскольку woeid вложен в XML, вы должны это сделать:

TBXMLElement *rootXML = XML.rootXMLElement; 
TBXMLElement *results = [TBXML childElementNamed:@"Result" parentElement:rootXML]; 
TBXMLElement *WOEID = [TBXML childElementNamed:@"woeid" parentElement:results]; 
NSString *woeid = [TBXML textForElement:WOEID]; 
Смежные вопросы