0

私はテストとさまざまな質問のゲームに取り組んでいます。ユーザーはメニューからトピックを選択でき、各メニューには 20 ~ 30 の質問があります。私がやりたいことは、ユーザーが終了ボタンをクリックしたときに XML ファイルを書き込むために、コードを XML にシリアル化することです。(彼が1、2、または10のテストを行うことができると考えて)。これを単純な XML でテストしてきましたが、これが最善の解決策かどうかはわかりません。

エクスポートされたファイルの形式は次のとおりです。

<?xml version="1.0"?>
<RESPUESTAS ID_CONVOCATORIA="21044826">
 <INCIDENCIA />
<NUM_PDA>PDA600035&#x0;</NUM_PDA>
<TEST Nom_Test="A_VER_SUP_01">
<NUM_TEST>1</NUM_TEST>
<NUMERO_ITEMS>19</NUMERO_ITEMS>
<CARACTERISTICAS VARIAS_RESPUESTAS="NO" HIPSATIVO="NO" />
<TIEMPO_TEST TIEMPO_TEST="SI">
  <VALOR_TIEMPO_TEST>900</VALOR_TIEMPO_TEST>
  <VALOR_TIEMPO_TRANSCURRIDO>900</VALOR_TIEMPO_TRANSCURRIDO>
</TIEMPO_TEST>
<TIEMPO_ITEM TIEMPO_ITEM="NO" />
<ITEM NUM_ITEM="1">
  <RESPUESTA>D</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="2">
  <RESPUESTA>D</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="3">
  <RESPUESTA>B</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="4">
  <RESPUESTA>D</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="5">
  <RESPUESTA>D</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="6">
  <RESPUESTA>B</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="7">
  <RESPUESTA>B</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="8">
  <RESPUESTA>A</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="9">
  <RESPUESTA>D</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="10">
  <RESPUESTA>D</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="11">
  <RESPUESTA>B</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="12">
  <RESPUESTA>D</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="13">
  <RESPUESTA>C</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="14">
  <RESPUESTA>D</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="15">
  <RESPUESTA>A</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="16">
  <RESPUESTA>C</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="17">
  <RESPUESTA>C</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="18">
  <RESPUESTA>A</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="19">
  <RESPUESTA>
  </RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
 </ITEM>
 </TEST>
 <TEST Nom_Test="A_NUM_SUP_01">
<NUM_TEST>2</NUM_TEST>
<NUMERO_ITEMS>15</NUMERO_ITEMS>
<CARACTERISTICAS VARIAS_RESPUESTAS="NO" HIPSATIVO="NO" />
<TIEMPO_TEST TIEMPO_TEST="SI">
  <VALOR_TIEMPO_TEST>1020</VALOR_TIEMPO_TEST>
  <VALOR_TIEMPO_TRANSCURRIDO>1020</VALOR_TIEMPO_TRANSCURRIDO>
</TIEMPO_TEST>
<TIEMPO_ITEM TIEMPO_ITEM="NO" />
<ITEM NUM_ITEM="1">
  <RESPUESTA>B</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="2">
  <RESPUESTA>B</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="3">
  <RESPUESTA>C</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="4">
  <RESPUESTA>A</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="5">
  <RESPUESTA>A</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="6">
  <RESPUESTA>A</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="7">
  <RESPUESTA />
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="8">
  <RESPUESTA>C</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="9">
  <RESPUESTA>B</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="10">
  <RESPUESTA>C</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="11">
  <RESPUESTA>D</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="12">
  <RESPUESTA>A</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="13">
  <RESPUESTA>D</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="14">
  <RESPUESTA>A</RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>
<ITEM NUM_ITEM="15">
  <RESPUESTA>
  </RESPUESTA>
  <VALOR_TIEMPO_TRANSCURRIDO />
</ITEM>

4

1 に答える 1

1

XmlSerializerあなたが必要なもののようです。

それが私のソリューションのようです。私はこのヘルパークラスを書きました:

public class XmlHelper {
    private static String NS_EMPTY = "";

    private XmlSerializer mSerializer;
    private StringWriter mWriter;
    private String mRootTag;

    public void start(String rootTag) throws IOException {
        mSerializer = Xml.newSerializer();
        mWriter = new StringWriter();
        mRootTag = rootTag;

        mSerializer.setOutput(mWriter);
        mSerializer.startDocument("UTF-8", true);
        mSerializer.startTag(NS_EMPTY, mRootTag);
    }

    public void addText(String tag, String text) throws IOException {
        mSerializer.startTag(NS_EMPTY, tag);
        mSerializer.text(text);
        mSerializer.endTag(NS_EMPTY, tag);
    }

    public void addTextIfNotEmpty(String tag, String text) throws IOException {
        if (!TextUtils.isEmpty(text)) {
            addText(tag, text);
        }
    }

    public void addText(String tag, int number) throws IOException {
        addText(tag, String.valueOf(number));
    }

    public void startTag(String tag) throws IOException {
        mSerializer.startTag(NS_EMPTY, tag);
    }

    public void endTag(String tag) throws IOException {
        mSerializer.endTag(NS_EMPTY, tag);
    }

    public void finish() throws IOException {
        mSerializer.endTag(NS_EMPTY, mRootTag);
        mSerializer.endDocument();
    }

    public String render() {
        return mWriter.toString();
    }
}

次に、シリアル化は次のようになります。

XmlHelper xmlHelper = new XmlHelper();

xmlHelper.start("request");
xmlHelper.addText("action", "add");
xmlHelper.startTag("person");
xmlHelper.addText("first_name", t.getFirstName());
xmlHelper.addText("last_name", t.getLastName());
xmlHelper.endTag("person");

xmlHelper.finish();

(これは単なる例であり、独自のスキームを使用する必要があります)

また、属性のサポートを追加するには、XmlHelperクラスを完了する必要があります(XmlSerializerドキュメントを参照)

于 2013-02-27T09:15:22.510 に答える