prefuse ライブラリを使用する Java のプログラムを実行しています。このプログラムは、twitter から収集した情報からグラフを生成します。後でロードできるように、生成されたグラフを保存するようにプログラムを作成しようとしています。
prefuse クラス GraphMLWriter は正常に動作し、UTF-8 および xml バージョン 1.0 でエンコードされた graphml を生成します。
生成されたgraphmlファイルをロードしたいときに問題が発生します。これを行うには、GraphMLReader クラスのメソッド readGraph(InputStream is) を使用します。このメソッドは Graph オブジェクトを返し、SaxParser を使用して、クラス GraphMLHandler のハンドラー オブジェクトで graphml ファイルを解析します。このオブジェクトは、de パーサーが xml ファイルのすべての行を解析するときにグラフを構築します。xml ファイルに「á」や「ñ」などの文字や顔文字が含まれていると、prefuse.data.io.DataIOException によって SAXParseException がスローされます。生成されたすべての xml ファイルには、ツイートを表す文字列が含まれています。
例は次のとおりです。
<data key="info">Las extraño muchooooo a ambas! ��</data>
エラーは言う:
スレッド「メイン」の例外 prefuse.data.io.DataIOException: >org.xml.sax.SAXParseException; 行番号: 165; 列番号: 67; 文字参照 "
エラーメッセージがカットされているようです。
これらは、グラフ オブジェクト「g」を「保存されたグラフ」と呼ばれる GraphML に保存するために使用するコードです。
(new GraphMLWriter()).writeGraph(graph, "Graph saved");
そして、これらは、「Graph saved」と呼ばれるGraphMLファイルから生成されたグラフ「g2」にグラフをロードするために使用するものです
Graph g2 = (new GraphMLReader().readGraph("Graph saved"));
この問題を解決するにはどうすればよいですか?