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

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

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

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


@Test
1: public void testGeneral() {
2:     XmlPullParserFactory factory;
3:     try {
4:         factory = XmlPullParserFactory.newInstance();
5:         XmlPullParser xmlPullParser = factory.newPullParser();
6:         String xmlSource = "";
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文字列として「」をセットして、13行目でこれが「abc」として解釈されていることが確認できる。
ちなみに13行目を「」と書くと実行結果はレッド(テスト失敗)になる。

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

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック