Stax を使用して xml タグ間の csv テキスト データを取得する際に問題が発生しています。タグ間のデータを読み取ろうとすると、余分な改行文字が散発的に追加されます。
とりわけ、Java プログラムにインポートしようとしているいくつかの csv セクションを含む XML ファイルがあります。具体的には、以下を含む XML ファイルの場合:
<layer name="Foreground" width="10" height="5">
<data encoding="csv">
0,6,0,0,0,0,0,0,0,0,
0,6,0,0,0,0,5,0,0,0,
0,2,0,0,0,0,2,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0
</data>
</layer>
csvデータを配列(または少なくとも文字列、そこから移動できます)にインポートしようとしています。イベントリーダーを介してデータを読み込もうとすると
if (startElement.getName().getLocalPart() == "data")
{
System.out.println("Parsing Data for Layer " + layerCounter);
while (attributes.hasNext())
{
Attribute attribute = attributes.next();
switch (attribute.getName().toString())
{
case ("encoding"):
System.out.println("\tEncoding = " + attribute.getValue());
break;
default:
break;
}
}
event = eventReader.nextEvent();
while(!event.isEndElement())
{
System.out.println(event.asCharacters().getData());
event = eventReader.nextEvent();
}
layerCounter++;
}
これは私が試みていることをほぼ実行しますが、出力に余分な改行文字が表示されます。上記のファイルの場合、次のようになります。
Parsing Data for Layer 1
Encoding = csv
0,6,0,0,0,0,0,0,0,0,
0,6,0,0,0,0,5,0,0,0,
0,2,0,0,0,0,2,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0
ここで何が起こっているのか誰かが知っているのではないかと思います。
私はまだ XML 解析に頭を悩ませようとしていますが、おそらくこのデータを純粋な形式で取得するためのより良い方法があるでしょう。または、XML ファイルを記述して XML タグ自体としてデータを格納することもできますが、csv 形式の方が便利だと考えました。
ありがとう、
アンドリュー