iOS - 无法使SMXMLDocument工作

时间:2011-12-15 17:10:25

标签: ios xml sdk

我正在使用名为SMXMLDocument的xmlparser。 https://github.com/nfarina/xmldocument

我使用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);
    }
}

这显然不起作用,我没有使用name元素获取日志。我的xml代码非常简单,如下所示:

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

任何人都可以帮我解释为什么这不起作用。 提前致谢! :d

2 个答案:

答案 0 :(得分:1)

而不是

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

 SMXMLElement *content = document.root;

因为“content”元素是文档的根目录:)

答案 1 :(得分:0)

你需要

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

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

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