java - SimpleXML,将具有动态名称的子项转换为列表

标签 java android simple-framework

我正在使用 SimpleXML http://simple.sourceforge.net/home.php 在我的 Android 应用程序中,

我从 API 获取数据如下:

<Items>
   <data_0>
      <name> x1 </name>
      <phone> y1 </phone>
   </data_0>
   <data_1>
      <name> x2 </name>
      <phone> y2 </phone>
   </data_1>
   <data_2> ... </data_2>
      ...
   <data_n> ... </data_n>
</Items>

如何使用 simpleXML 编写 POJO 类,以便它接受无限数量的 <data_n>元素?

最佳答案

这是一个设计得很糟糕的 XML 文档,如果您对收到的格式有任何影响,我建议您请求更改为:

<Items>
   <data id="0">
      <name> x1 </name>
      <phone> y1 </phone>
   </data>
   <data id="1">
      <name> x2 </name>
      <phone> y2 </phone>
   </data>
   <data id="2"> ... </data>
      ...
   <data id="n"> ... </data>
</Items>

就我个人而言,我什至不会尝试为此设计 POJO,而只是将 XML(甚至简单地在其字符串表示形式中使用字符串模式替换)清理为上面的格式(您甚至可以去掉 id 属性完全作为列表上的位置无论如何都会反射(reflect)它),随后可以将其定义为数据对象的 List

除非你能保证data元素的最大数量(然后复制粘贴几十个可怕的命名元素就可以达到目的),我认为你甚至不能为此设计一个POJO,因为您无法同时为此文档定义 XML 架构。

关于java - SimpleXML,将具有动态名称的子项转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24267095/

相关文章:

android - 简单 XML - 即使提要具有 "changed"并且已添加新属性,如何成功解析?

java - ActionListener 和 IF 语句出现问题

android - 如何拦截点击TextView中的链接?

android - 谷歌地图 setClustering(ClusteringSettings) 方法未解析

java - JAXB 中的 native 查询

java - 如何将 jaxb 注释移植到 simpleXml 库?

java - 在 Maven 构建的 JAR 中找不到 Jersey 消息正文阅读器

java - 如何访问 Android 手机上的相机?

java - 如何将 Angular2 与 Java 集成

android - 无法让应用程序以编程方式解锁键盘 [现有解决方案均无效!]