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 回答