1

parsed からデータを保存する必要がありますXML。解析に問題はなく、処理できます。問題は、基本的に、列名、列番号、およびデータ自体が毎回異なるテーブルデータを受け取ることです。SQLiteエントリの数が少なく、この状況に対応できないため、データベースを使用したくありません。受け取るデータセットごとに新しいテーブルを作成する必要があるため、使用できないとさえ思います。より明確にするために、いくつかの例を次に示します。

 <Details1_Collection>
    <Details1 ProductName="Bicycle" Units="2341" DefectedUnits="125" />
    <Details1 ProductName="Television" Units="3154" DefectedUnits="75" />
    <Details1 ProductName="Keyboard" Units="2413" DefectedUnits="12" />
    ...
  </Details1_Collection>

または別のXML:

 <Details_Collection>
    <Details HireDate="2003-02-15T00:00:00" JobTitle="Chief Executive Officer"  BirthDate="1963-03-02T00:00:00" />
    <Details HireDate="2002-03-03T00:00:00" JobTitle="Vice President of Engineering" BirthDate="1965-09-01T00:00:00" />
    <Details HireDate="2001-12-12T00:00:00" JobTitle="Engineering Manager" BirthDate="1968-12- 13T00:00:00" />
    ...
 <Details_Collection>

ここで、XML タグが異なっていることがわかります:Details1_CollectionDetails_CollectionDetails1Detailsほぼ毎回新しいタグ セットを受け取ります。しかし、それは私にとっては問題ではありません。サーバーへのより早い呼び出しでそれらを受信するので、どのタグを解析する必要があるかがわかります。属性も名前も既に持っているので、それらを保存する必要はありません。値のみを保存する必要があります。

質問:

基本的にテーブルデータですが、毎回異なる列名と番号を持つ別のテーブルである属性データをどのように保存すればよいですか? このデータをString/Dom親オブジェクト内の要素としてそのまま保存するのではなく、UI スレッドで簡単にアクセスできる Java データ構造に解析することをお勧めします。

要するに:

このデータはより大きなオブジェクトの一部であり、私の目標は、それをある種のデータ構造に解析し、親クラスの一部としてアタッチすることです。

それについての助けをいただければ幸いです。

4

2 に答える 2

0

典型的な Java シリアライゼーションを実行できない理由はありますか? のように、データを表すクラスを作成し、それらに を実装させ、 sSerializableを使用してオブジェクト グラフ全体をファイルに読み書きするだけです。Object(Input|Output)Stream

これは、オブジェクト グラフ全体がメモリに収まる場合にのみ機能することに注意してください。

于 2013-03-20T10:52:27.777 に答える
0

次のフォーラム投稿に出くわしました。

http://www.javaprogrammingforums.com/java-programming-tutorials/696-multi-dimension-arraylist-example.html

ArrayLists の ArrayList の実装があります。これはコードです。

import java.util.ArrayList;

public class ArrayList2d<Type>
{
ArrayList<ArrayList<Type>>  array;

public ArrayList2d()
{
    array = new ArrayList<ArrayList<Type>>();
}

/**
 * ensures a minimum capacity of num rows. Note that this does not guarantee
 * that there are that many rows.
 * 
 * @param num
 */
public void ensureCapacity(int num)
{
    array.ensureCapacity(num);
}

/**
 * Ensures that the given row has at least the given capacity. Note that
 * this method will also ensure that getNumRows() >= row
 * 
 * @param row
 * @param num
 */
public void ensureCapacity(int row, int num)
{
    ensureCapacity(row);
    while (row < getNumRows())
    {
        array.add(new ArrayList<Type>());
    }
    array.get(row).ensureCapacity(num);
}

/**
 * Adds an item at the end of the specified row. This will guarantee that at least row rows exist.
 */
public void Add(Type data, int row)
{
    ensureCapacity(row);
    while(row >= getNumRows())
    {
        array.add(new ArrayList<Type>());
    }
    array.get(row).add(data);
}

public Type get(int row, int col)
{
    return array.get(row).get(col);
}

public void set(int row, int col, Type data)
{
    array.get(row).set(col,data);
}

public void remove(int row, int col)
{
    array.get(row).remove(col);
}

public boolean contains(Type data)
{
    for (int i = 0; i < array.size(); i++)
    {
        if (array.get(i).contains(data))
        {
            return true;
        }
    }
    return false;
}

public int getNumRows()
{
    return array.size();
}

public int getNumCols(int row)
{
    return array.get(row).size();
}
}

これは、保存したいデータを保存するために現時点で見つけた最良の方法です。Javaの専門家の皆さん、どう思いますか?

ありがとう。

于 2013-03-20T10:44:26.777 に答える