Anj26Pro:
一日良い、イムのArrayListにそれを置き、それぞれの名前を表示するXMLファイルを読み込むプログラムを作成しようとしています。出力は、どのようにファイル内のオブジェクトを読んでください表示されて何名空白がないときにその文字列とどのように私は配列へのXMLの名前を得ることができますか?
import java.beans.*;
import java.io.*;
import javax.swing.JOptionPane;
import java.util.*;
import java.lang.ArrayIndexOutOfBoundsException;
public class ReadNamesFromXML
{
public static void main(String[] args)
{
try {
XMLDecoder decoder = new XMLDecoder(new
FileInputStream("lab10.xml"));
ArrayList<String> names = new ArrayList<>();
System.out.println(names);
}
catch (FileNotFoundException e){
JOptionPane.showMessageDialog(null,"Not found");
}
catch(ArrayIndexOutOfBoundsException e){
JOptionPane.showMessageDialog(null,"Not found");
}
}
}
XMLファイル:
<java version="1.8.0_144" class="java.beans.XMLDecoder">
<string>Harry</string>
<string>Ron</string>
<string>Hermione</string>
<string>Luna</string>
<string>Draco</string>
<string>Neville</string>
<string>Seamus</string>
<string>Ginny</string>
<string>Fred</string>
<string>George</string>
</java>
モンキー:
あなたの質問の説明が言うので、「出力が空白になっている」リストに出力を得るために、あなたのコード内の変更次の操作を行う必要があります。
- あなたは使用してXMLファイルからデータを読み取る必要がある
decoder.readObject();
、これは型がにキャストして、あなたのオブジェクトを返します、String
そしてあなたに追加しますArrayList
。 - ときに
decoder.readObject();
読んでにすべてを追加することで行われArrayList
、それがスローされますArrayIndexOutOfBoundsException
へのメッセージが変化し、「すべてのリストに追加」の代わりに「見つかりません」、と言う[OK]をクリックした後、[OK]を、それはすべての名前をコンソール上で、あなたのリストを印刷します。 また、すべてあなたを閉じることをお勧めし
streams
ますが、使用することができ、そのためにあなたのプログラムは、終了したらfinally
ブロックを。public static void main(String... args) { XMLDecoder decoder = null; ArrayList<String> names = null; String s = null; try { decoder = new XMLDecoder(new FileInputStream("lab10.xml")); names = new ArrayList<>(); do { s = (String)decoder.readObject(); names.add(s); } while(null != s); } catch (FileNotFoundException e){ JOptionPane.showMessageDialog(null,"Not found"); }catch(ArrayIndexOutOfBoundsException e){ JOptionPane.showMessageDialog(null,"All added to list"); } finally { System.out.println(names); decoder.close(); } }