2013-02-27 36 views
0

我正在測試遊戲和不同的問題。用戶可以從菜單中選擇一個主題,每個菜單中有20-30個問題。我想要做的是將我的代碼序列化爲XML,以便在用戶單擊完成按鈕時寫入XML文件。 (考慮到他可以做1,2或10測試)。我一直在用簡單的XML來測試它,但我不知道這是否是最好的解決方案。XML序列化與長xmls

這裏是導出文件的格式:

<?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> 

回答

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文檔)

+0

我將檢查XML序列化器,感謝您的幫助和示例 – Katherine99 2013-02-27 09:18:39