民芸的プログラミング 〜ソフトウェア開発日記〜

アクセスカウンタ

zoom RSS XmlPullParser が CDATA をどのように扱うのか調べてみた

<<   作成日時 : 2015/12/13 21:38   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

Android で XMLドキュメントをパースする際によくお世話になるXmlPullParser。
これがCDATAをどう扱うのか不安になったので調べてみた。

要は、"<test><![CDATA[abc]]></test>" という文字列をXmlPullParserでパースした場合に「abc」という文字列が得られるのか、それとも"<![CDATA[abc]]>"という文字列が得られるのかということ。

結論からいうと、「abc」が得られた。


@Test
1: public void testGeneral() {
2:     XmlPullParserFactory factory;
3:     try {
4:         factory = XmlPullParserFactory.newInstance();
5:         XmlPullParser xmlPullParser = factory.newPullParser();
6:         String xmlSource = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><test><![CDATA[abc]]></test>";
7:         InputStream inputStream = new ByteArrayInputStream(xmlSource.getBytes());
8:         InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
9:         xmlPullParser.setInput(inputStreamReader);
10:
11:        int eventType = xmlPullParser.next();
12:        assertEquals(XmlPullParser.START_TAG, eventType);
13:        String result = xmlPullParser.nextText();
14:        assertEquals("abc", result);
15:    } catch (XmlPullParserException e) {
16:        e.printStackTrace();
17:    } catch (IOException e) {
18:        e.printStackTrace();
19:    }
20:}

をJUnitで実行するとグリーンになった。

6行目でXML文字列として「<![CDATA[abc]]>」をセットして、13行目でこれが「abc」として解釈されていることが確認できる。
ちなみに13行目を「<![CDATA[abc]]>」と書くと実行結果はレッド(テスト失敗)になる。

もうこれは実験の結果がこうなのだから、XmlPullParserはこのように実装されているのだとしか言いようがない。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
XmlPullParser が CDATA をどのように扱うのか調べてみた 民芸的プログラミング 〜ソフトウェア開発日記〜/BIGLOBEウェブリブログ
文字サイズ:       閉じる