【问题标题】:XML Serialization with long xmls带有长 xml 的 XML 序列化
【发布时间】:2013-02-27 08:55:58
【问题描述】:

我正在开发一个测试游戏和不同的问题。用户可以从菜单中选择一个主题,每个菜单中有 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>

【问题讨论】:

    标签: android xml serialization


    【解决方案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 文档)

    【讨论】:

    • 我会检查 XML Serializer,感谢您的帮助和示例
    猜你喜欢
    • 2023-04-07
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多