我正在使用名为SMXMLDocument
的xmlparser。 https://github.com/nfarina/xmldocument
我使用NSURLConnection
和NSURL
来获取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
答案 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);