在我的iPhone应用程序中,我需要在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>
答案 0 :(得分:1)
TBXMLElement *rootXML = XML.rootXMLElement;
TBXMLElement *e = [TBXML childElementNamed:@"Result" parentElement:rootXML];
NSString *woeid = [TBXML textForElement:e->firstChild];
childElementNamed
返回您命名的元素,因此在本例中为“Result”。您需要此元素的子的内容
答案 1 :(得分: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];