2011-12-15 122 views
0

使用名为SMXMLDocument的xmlparser进行操作。 https://github.com/nfarina/xmldocumentiOS - 无法使SMXMLDocument正常工作

我使用NSURLConnectionNSURL来取XML下来,这工作正常。我可以将它记录在控制台中。

现在是时候获取字符串中的元素,并使用此代码。

- (void)connectionDidFinishLoading:(NSURLConnection *)conn 
{ 
    NSString *fetchedXML = [[[NSString alloc] initWithData:xmlData encoding:NSUTF8StringEncoding] autorelease]; 
    NSLog(@"%@", fetchedXML); 

    [xmlData release]; 
    xmlData = nil; 

    [connection release]; 
    connection = nil; 

    [self performSelector:@selector(parseXML)]; 

} 

-(void)parseXML 
{ 

    SMXMLDocument *document = [SMXMLDocument documentWithData:xmlData error:nil]; 

    SMXMLElement *content = [document.root childNamed:@"content"]; 


    for (SMXMLElement *name in [content childrenNamed:@"name"]) 
    { 
     NSString *name = [name valueWithPath:@"name"]; 
     NSLog(@"name:%@", name); 
    } 
} 

这显然不工作,我没有得到与名称元素的日志。我的xml代码很简单,看起来像这样:

<?xml version="1.0" encoding="UTF-8" ?> 
<content> 
<name>John Doe</name> 
</content> 

任何人都可以帮助我,为什么这是行不通的。 在此先感谢! :d

回答

1

而不是

SMXMLElement *content = [document.root childNamed:@"content"]; 

尝试

SMXMLElement *content = document.root; 

因为 “内容” 元素为您的文档:)

0

的根本需要

SMXMLDocument *document = [SMXMLDocument documentWithData:xmlData error:nil]; 

NSString *content = [[[document.root childNamed:@"content"] childNamed:@"name"] value]; 

NSLog(@"name:%@", content);