【问题标题】:ios rss parse html content inside <content> tagios rss 解析 <content> 标签内的 html 内容
【发布时间】:2013-11-11 06:01:17
【问题描述】:

我正在尝试使用 NSXMLPARSER 解析 RSS 提要。我正在获取标题、图像、pubDate 一切,但问题在于内容标签。这里的内容标签有来自 rss 的 html 内容。那么我怎样才能获得内容标签内的所有数据以及html。我的数据如下。

    <content><p>(مستعمل )<br />
•مرسيدس بانورما<br />
•   موديل 2008<br />
•   محرك 6 سلندر 3.5 لتر<br />
•   جيراتوماتيك<br />
•   العداد 107.000كلم<br />
•   مقاعد جلد جملي<br />
•   وسائد هوائية<br />
•   جنوط amg<br />
•   اللون لؤلؤي<br />
السياره فل كامل &#8211; سقف بانورما &#8211; رؤيه ليله &#8211; نافيشين سستم gps &#8211; شاشات خلفيه جنوط amg 20 &#8211; السياره نظيفه وغاية المستخدم تم تعديل سعر السياره 159الف ريال قابل للتفاوض في حدود المعقول<br />
كما يتوفر لدينا جميع انواع السيارات جديده ومستعمله ويوجد لدينا تاجير منتهي بالتمليك<br />
معرض السفير الشرقي للسيارات الدمام الخضريه<br />
طريق الجبيل الظهران السريع<br />
سيارات جديده &#8211; مستعمله &#8211; خدمات المرور<br />
للتواصل 0583188870&#8211;0556802016<br />
زورو معرضنا<br />
السفير سفيرك لاختيار سيارتك &#8230;.</p>
</content>

我正在使用下面的代码来获取内容。

-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{
    NSLog(@"Before: %@",string);


    currentNodeContent = (NSMutableString *) string;

}

我没有从这个内容标签中得到任何东西,其他像标题、图像和日期没有 html,所以我没有任何问题。那么在这里做什么呢。

【问题讨论】:

    标签: ios xml-parsing rss


    【解决方案1】:

    foundCharacter 可以被多次调用,所以你必须检查标签:

    你要获取内容的标签是&lt;p&gt;标签而不是&lt;content&gt;标签,因为NSXMLParser认为&lt;p&gt;是xml结构的一部分。

    您应该在&lt;![CDATA[&lt;html&gt; ... &lt;/html&gt; ]] 中生成所有HTML,然后将其放入内容标签中。否则解析器不会得到它。对于 CDATA,您可以使用此委托方法:

    - (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
    {
        NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
    }
    

    【讨论】:

    • 标签来自于数据库本身,所以有时这个

      标签可能不会出现。所以我的主要标签是 标签,它将返回一些带有

      或不带

      的内容。

    • 编辑了我的答案。这是没有问题的唯一方法。
    • 你能告诉我 CDATA 如何解析吗,下面的这个方法也不返回 CDATA 内的内容。 -(void) 解析器:(NSXMLParser *)解析器找到字符:(NSString *)string { NSLog(@"Before: %@",string); currentNodeContent = (NSMutableString *) 字符串; }
    • CDATA 的要点是其中的任何内容都不会被视为 XML 文档的一部分。因此,如果您在 CDATA 中有标签,解析器将忽略它们。您只需要查找 elementName“内容”。使用您可以调用的另一种委托方法编辑了我的答案。
    • 你好 NIkos 你能告诉我如何从你的回答中获取多个 CDATA 元素,比如我是否同时拥有 以及如何找到哪个元素来自 - (void)parser: (NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock { NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding]; } 这个方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 2015-09-17
    • 2013-06-27
    • 2012-04-13
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多