DocumentBuilder.parse

javax.xml.parsers.DocumentBuilderのparseメソッドを使うと、入力からDocumentクラスのインスタンスを作ってくれる。その際入力元は「ファイル、インプット・ストリーム、文字列」…なのだが、その文字列は「uri」であったりする。つまり、「ファイルの場所」を示す文字列。


この制約があると、テストをする時とかに「XMLが必ずファイルとして存在する必要がある」というのが面倒になるのですけど。文字列として(プログラム内で)サンプルのXMLを確保しておいて放り込むことが出来ない…。


ついでにこの方法で作れるのは完全なDocumentであって、構造に妥当なXMLの制約である「ルートエレメントで囲まれている」とかの制約がある。特定の混在内容エレメント*1の中身を文字列から生成するような場合、それはDocumentFragmentになる。でも、文字列からDocumentFragmentを作るようなメソッドも見つからない…。


とりあえず、頭の体操として文字列からDOMの断片を組み立てるプログラムを書いてみたが、XMLの詳細仕様を目にしたのはずいぶん前なので、「エレメントタグではない<>で括られるもの」に何があったのか今ひとつ思い出せない(笑)

処理命令(?ではじまる)と宣言(!ではじまる)だけか?


それも「捨てる」のなら簡単なのだが、処理命令とかまで再現するとなるとまためんどくさい。

*1:中身が文字とエレメントの両方であるエレメント。文字修飾をエレメントで表現している場合だと、書式付きの文字列は混在内容になる。