5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

(初心者向け)NSXMLParserでCDATAを解析する

Last updated at Posted at 2014-03-17

ネットで検索してもStackOverflowにしか情報が無かったので備忘録代わりに投稿しました。

ニュースアプリを製作しているときに引っかかったのが、xmlのCDATAセクションでした。
CDATAセクションとは、以下のサンプルのものを言います。

CdataSample.xml
<description><![CDATA[<p><img src="http://xxxxxx.jpg" width="640" height="360"/>]]></description>

CDATAセクションの中にはHTMLタグも埋め込むことができるので、RSSを配信している側にとっては便利なんですが、XMLパーサーを回避するので、XML解析する側にとっては嫌な存在です。ただ、NSXMLParserにはCDATAを解析するメソッドが用意されています。

XmlParser.m
-(void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock{
   // CDATAの中身をUTF-8にエンコーディングする。
   NSString *string = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
}

このメソッドはNSXMLParserを使うときにCDATAを扱える唯一の手段なのですが、デメリットとして[elementName isEqualToString:@"item"]のようにタグを検索できないので、私はNSRangeを使って解析しています。面倒ですが、正規表現の練習と思って頑張りましょう。

引用:Reading CDATA Sections parsing XML in Objective C(StackOverflow)

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?