我正在为我的播客的朋友创建一个应用程序。该应用程序有一个rss xml文件及其URL。在这里四处看看后,我决定使用KissXML作为其文档,但我似乎无法让DDXMLDocument正常工作。我使用播客的RSS订阅源创建了一个连接,其网址为
NSString *podcastURL = [NSString stringWithFormat:@"http://podcast.website.com/rss/"];
NSURL *requestURL = [NSURL URLWithString:podcastURL];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:requestURL];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]
然后,在委托方法
中- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
我正在尝试使用收到的数据来创建DDXMLDocument。在使用...
创建字符串后,我尝试了initWithData和initWithStringNSError *error = nil;
NSString *response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
我NSLog这个字符串看它的内容,它看起来像一个非常好的xml文档给我。我用
创建XMLDocDDXMLDocument *responseDoc = [[DDXMLDocument alloc] initWithXMLString:response options:0 error:&error];
但是当我尝试检查这个新的XMLDoc时,我得到的只是NULL。 谁能看出我做错了什么? XML String响应看起来对我有用,但我想我真的不知道。谢谢你的帮助!
编辑:我想我应该添加一些我收到的XML,以防有人发现我不能解决它的问题。播客有超过100集,每一集都有所有的东西,如长度,描述,标题,iTunes的一堆东西等。这是XML的开头看起来像,其中一个剧集包括(虽然没有任何真正的播客信息):
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cc="http://web.resource.org/cc/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:media="http://search.yahoo.com/mrss/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<channel>
<atom:link href="http://podcast.libsyn.com/rss/" rel="self" type="application/rss+xml"/>
<title>Podcast</title>
<pubDate>Mon, 01 Oct 2012 06:18:33 +0000</pubDate>
<lastBuildDate>Wed, 03 Oct 2012 22:19:37 +0000</lastBuildDate>
<generator>Libsyn WebEngine 2.0</generator>
<link>http://podcast.libsyn.com</link>
<language>en</language>
<copyright><![CDATA[podcast]]></copyright>
<docs>http://podcast.libsyn.com</docs>
<managingEditor>person@hotmail.com (person@hotmail.com)</managingEditor>
<description><![CDATA[Comedy podcast with People!]]></description>
<image>
<url>http://assets.libsyn.com/content/3220867.jpg</url>
<title>podcast</title>
<link><![CDATA[http://podcast.libsyn.com]]></link>
</image>
<itunes:author>Person1 and Person2</itunes:author>
<itunes:keywords>keywords</itunes:keywords>
<itunes:category text="Comedy"/>
<itunes:image href="http://assets.libsyn.com/content/3220867.jpg" />
<itunes:explicit>yes</itunes:explicit>
<itunes:owner>
<itunes:name><![CDATA[Person1]]></itunes:name>
<itunes:email>person@hotmail.com</itunes:email>
</itunes:owner>
<itunes:summary><![CDATA[Show Summary]]></itunes:summary>
<itunes:subtitle><![CDATA[podcast]]></itunes:subtitle>
<item>
<title>#123 - Episode123 Title</title>
<pubDate>Mon, 01 Oct 2012 06:18:33 +0000</pubDate>
<guid isPermaLink="false"><![CDATA[46f771dfb560aa4d573fe3ebdee86870]]></guid>
<link><![CDATA[http://podcast.libsyn.com/Episode123_Title]]></link>
<media:thumbnail url="http://assets.libsyn.com/item/2082832" />
<description><![CDATA[<p>Description of Episode 123.</p>
<p>Music: Episode 123 Music</p>]]></description>
<enclosure length="80069010" type="audio/mpeg" url="http://traffic.libsyn.com/podcast/123.mp3" />
<itunes:duration>01:06:44</itunes:duration>
<itunes:explicit>no</itunes:explicit>
<itunes:keywords />
<itunes:subtitle><![CDATA[Episode 123 Description]]></itunes:subtitle>
</item>
很抱歉,如果这个太多了,不能发布在这里。这个XML中包含的是标题内容和一个项目(插曲集)。这看起来像是应该与DDXMLDocument一起使用的正确代码吗?再次感谢大家。
答案 0 :(得分:0)
看起来Tim Dean的评论是正确的。我收到的XML字符串非常庞大,以至于我没有注意到它们在didReceiveData中调用NSLog之间实际上是分开的。一切都很好,DDXMLDocument无法用这些部分字符串创建。谢谢!
答案 1 :(得分:0)
好吧,也许有点晚了,但为什么不使用KissXML本身的this example:
-(void)downloadXML{
AFKissXMLRequestOperation *operation = [AFKissXMLRequestOperation XMLDocumentRequestOperationWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://legalindexes.indoff.com/sitemap.xml"]] success:^(NSURLRequest *request, NSHTTPURLResponse *response, DDXMLDocument *XMLDocument) {
NSLog(@"XMLDocument: %@", XMLDocument);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, DDXMLDocument *XMLDocument) {
NSLog(@"Failure!");
}];
[operation start];
然后您需要做的就是XMLDocument
并取出所需的DDXMLElements