2009-12-10 121 views
0

我有这个字符串:XML解析iPhone

<?xml version="1.0" encoding="UTF-8"?> 
    SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:methods" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="urn:PingdomAPI" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:createAccountResponse><return xsi:type="ns2:CreateAccountResponse"><status xsi:type="xsd:int">3</status><password xsi:nil="true"/></return></ns1:createAccountResponse></SOAP-ENV:Body></SOAP-ENV:Envelope> 

的问题是:如何提取的3 int值,对于状态值。

回答

1

这些例子取自Apple的e vent driven XML programming guide

创建和初始化的NSXMLParser实例:

BOOL success; 
NSURL *xmlURL = [NSURL fileURLWithPath:pathToFile]; 
if (addressParser) // addressParser is an NSXMLParser instance variable 
    [addressParser release]; 
addressParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL]; 
[addressParser setDelegate:self]; 
[addressParser setShouldResolveExternalEntities:YES]; 
success = [addressParser parse]; // return value not used 
      // if not successful, delegate is informed of error 

实施委派方法是你的兴趣。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict 

有关的委托方法的完整列表,请参阅NSXMLParser Class Reference

+0

由于性能问题,NSXML仅适用于模拟器,但不适用于设备本身 – Mladen 2009-12-10 16:08:24

+2

您是正确的MLaden,但rjstelling的示例使用NSXMLParser,它在设备上可用。 – philsquared 2009-12-10 16:10:39

+0

我将如何实现这个我的问题。我建议我将addressParser初始化为字符串的内容而不是URL。但如何提取关键“状态”的int值? – Mladen 2009-12-10 16:19:30