2016-10-13 6 views
1

私は、XMLファイルがあります:私は属性値(私の場合はすべてのタグの名前とサイズの値ファイル)を取得し、ために、コレクションに記述する必要がSAXパーサーでXMLの解析時にデータを保存する方法は?

<?xml version="1.0" encoding="utf-8" ?> 
<list> 
<file name="a" size="559393"/> 
<file name="b" size="1766945"/> 
... 
</list> 

を私のプログラムはさらに働きます。

これはどのように実現する必要がありますか?フィールド名前サイズでオブジェクトを作成し、ArrayListObjectにすべてを追加するために、各タグファイルについては?

+0

一生懸命鳴りません。 'MyFile'オブジェクトを' name 'と' size 'というメンバで定義するだけで、 'ArrayList 'はすべてを埋め込み、それをXML構文解析 – 0xDEADC0DE

+0

はいと組み合わせるだけです。 SAXパーサーを使用して、あなたは属性の名前とサイズの値を取得しています。 Bean/pojoクラスを作成することができます。ここでは 'name'と' size'を使って 'FileInfo'と言うことができます。 XML値の構文解析と反復処理では、これらの値を 'FileInfo'オブジェクトに設定し、' ArrayList'オブジェクトに追加することができます。もしあなたのファイル名が一意であれば、 'Map'を使って、値を取り出すための' ArrayList'反復を避けることができます。 – Vish

+0

@Vishあなたは説明してください: "ファイル名が一意であれば、マップを使用して値を取得するためのArrayList反復を避けることができます" – Gleb

答えて

0

はい、名前とサイズの属性を持つオブジェクトが既に存在している必要があります。開始要素メソッドでは、このような操作を行います。

@Override 
public void startElement(String uri, String localName, String qName, Attributes attributes) 
     throws SAXException { 

    if (qName.equalsIgnoreCase("file")) { 
     String name = attributes.getValue("name"); 
     String size = attributes.getValue("size"); 
     file file = new file (name,size); 
     list.add(file); 
     } 
     } 

関連する問題