「覚え間違い」を教えてください!

JavaでXMLをパースするプログラムを初めて試しています。
parseメソッドの第一引数がファイルオブジェクトなのですが、これをメモリ(文字列)オブジェクトを与えて同じ動作させるものはあるのでしょうか?


// SAXパーサーファクトリを生成
SAXParserFactory spfactory = SAXParserFactory.newInstance();
// SAXパーサーを生成
SAXParser parser = spfactory.newSAXParser();
// XMLファイルを指定されたデフォルトハンドラーで処理します
parser.parse(new File("helloworld.xml"), new InsXMLParser());

※このように
String str = "<xml? ......";
parser.XXXXXX(str, new InsXMLParser

A 回答 (1件)

 このSAXParserのparseだが、Fileインスタンスの他にInputStreamインスタンスを引数に取るオーバーロードが存在する。



 SAXParser#parse(InputStream, DefaultParser)

これはInputStreamからreadしてパースするものだ。つまり、Stringを何らかの方法でInputStreamにしてやれば良い。方法は簡単。StringをgetBytesでbyte配列に取ってから、ByteArrayInputStremに食わせてやればよい。

// ※このように
String str = "<xml? ......";
// SAXパーサーファクトリを生成
SAXParserFactory spfactory = SAXParserFactory.newInstance();
// SAXパーサーを生成
SAXParser parser = spfactory.newSAXParser();
// XMLファイルを指定されたデフォルトハンドラーで処理します
parser.parse(new ByteArrayInputStream(str.getBytes()), new InsXMLParser());

 動くと思うが頭ん中だけで書いているのでぜひ実験して欲しい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報