April 13, 2004

定義済み実体

XMLの処理をJavaでやっているわけですが、定義済み実体参照はデフォルトで解決してくれるみたいです。調べた限りどこにもドキュメントがなかったので、自分でテストクラスをつくって試してみました。解決されるのがあたりまえすぎて、書いていないのかな??

試したのは、デフォルト状態のSAXParserで、定義済み実体が文字に変換されるか。結果、XMLで定義済みの実体参照5種類はすべて文字に変換されました。
ちなみに定義済み実体の5種類とは>(&gt;)、<(&lt;)、&(&amp;)、'(&apos;)、"(&quot)です。

テストコードは続きをどうぞ。

XmlReaderExperiment.java

import java.io.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;

public class XmlReaderExperiment{
    
    public XmlReaderExperiment(){}
    
    public static void main(String args[]){
        
        try{
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser parser = factory.newSAXParser();
            TestHandler handler = new TestHandler();
            parser.parse(new File("hoge.xml"), handler);
        }catch(Exception e){e.printStackTrace();}
    }
}

class TestHandler extends DefaultHandler{
    
    public TestHandler(){super();}
    
    /**
     * テキストデータ読み込み時
     */
    public void characters(char[] c, int offset, int length) throws SAXException{

        System.out.println("CDATA start!!");
        System.out.println(" string:\t" + new String(c, offset, length));
    }
}

hoge.xml

<?xml version="1.0" encoding="UTF-8"?>
<root>
<head></head>
<body>
&gt;(大なり)
&lt;(小なり)
&amp;(アンド)
&apos;(アポストロフィー)
&quot;(引用符)
</body>
</root>

18:16 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | トラックバック
このエントリーのトラックバックURL: http://fenrir.naruoka.org/mt/mt-tb.cgi/237
コメント
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。