0

オブジェクトをxmlに変換するために、独自のandroidシリアル化クラスを作成しています。バーの色、長方形、分割で構成されるバークラスを作成しました。

public class Bar {

    String colour;
    int Rect;
    int Division;

    public Bar(String colour, int Rect, int Division) {

        this.colour = colour;
        this.Rect = Rect;
        this.Division = Division;

    }

    public String getColour() {

        return colour;
    }

    public int getRect() {

        return Rect;
    }

    public int getDivision() {

        return Division;
    }

}

私の主な活動では、2つのバーを作成し、それらを配列に追加します。配列をループして各バーの色を取得し、これをxmlファイルに書き込みたいと思います。ただし、ファイルが作成されると、xmlファイルに書き込まれるのは私のxmlヘッダーだけです。以下は私のコードです。

public class MainActivity extends Activity {

    private String header = "[xmlDoc setVersion:@" + "\" 1.0 \"" + "]" + "\n";
    private String barModel = "<barModel>" + "\n";
    private String bars = "<bars>" + "\n";
    private String bar = "<bar>" + "\n";
    private String rect1 = "<rect>";
    private String rect2 = "</rect>" + "\n";
    private String divisions = "<divisions>";
    private String divisions2 = "</divisions>" + "\n";
    private String colorId = "<colorId>";
    private String colorId2 = "</colorId>" + "\n";
    ArrayList<Bar> barList;
    Bar David;
    Bar Perrine;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addtoArray();
        saveModel();
        setContentView(R.layout.activity_main);

    }

    public void addtoArray() {

        List<Bar> barList = new ArrayList<Bar>();

        barList.add(new Bar("Blue", 33, 8898));
        barList.add(new Bar("Red", 6876, 65));

    }

    protected void saveModel() { // creat directory and file to write to File

        File xmlFile = new File(Environment.getExternalStorageDirectory()
                .getPath() + "/serializeObject");
        xmlFile.mkdirs();
        File file = new File(xmlFile, "personmodel.xml");

        try {

            FileWriter writer = new FileWriter(file);
            writer.append(header);
            writer.flush();

            // iterate through bars
            for (Bar array : barList) {

                String colour = array.getColour();
                writer.append(colorId);
                writer.append(colour);
                writer.append(colorId2);
                writer.flush();
                writer.close();

            }

        } catch (Exception e) {
            // Log.d("Downloader", e.getMessage());
        }

    }
}

誰かが私を助けて、私がどこで間違っているのか教えてもらえますか?

4

2 に答える 2

0

むしろJSONを使用したいと思います。

シリアル化:

try {
    JSONObject bar = new JSONObject();
    bar.put("color", yourBarObject.getColor());
    bar.put("rect", yourBarObject.getRect());
    bar.put("division", yourBarObject.getDivision());
    // Here you are
    String representation = bar.toString();

} catch (JSONException ex){
    ex.printStackTrace();
    throw new RuntimeException(ex);
}

デシリアライズ:

try {
    JSONObject bar = new JSONObject(representation);
    String color = bar.getString("color");
    int division = bar.getInt("division");
    int rect = bar.getInt("rect");
    Bar bar = new Bar(color, rect, division);
} catch (JSONException ex){
    ex.printStackTrace();
    throw new RuntimeException(ex);
} 

ちなみに、キャメルケースの表記:、、に固執してみてThisIsAClassNameくださいthisIsAnObjectName

于 2013-02-19T15:54:45.167 に答える
0

XML データを書き出す最も簡単な方法XmlSerializerは、SDK ( docs link ) で使用することです。これにより、すべてのボイラープレートのようなヘッダーとすべてのブラケット構文を提供する必要がなくなり、タグの開始と終了、および間にデータ要素と属性を追加することに集中できます。

于 2013-02-19T15:46:42.547 に答える