2013-02-27 6 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

Смежные вопросы