【问题标题】:which data structure should be used for storing different tag values of XML after parsing it解析XML后应该使用哪种数据结构来存储XML的不同标签值
【发布时间】:2010-10-22 09:41:38
【问题描述】:

我想知道一种用于存储标签值的数据结构。我的 XML 结构是:

<personaldetails>
    <name>Michael</name>
    <age>28</age>
    <gender>Male</gender>
    <address>123 Streeet 7</address>
    <country>India</country>
    <pincode> 1234877</pincode>
    <contactno>35646445</contactno>
    <emailid>michael@abc.com</emailid>
</personaldetails>

我想使用数据结构将值存储在一个地方。目前我正在使用 setter 和 getter 方法来检索值,这使我的代码变大了。 有人可以提出一些建议吗?

【问题讨论】:

    标签: java android data-structures


    【解决方案1】:

    对象上的 Getter 和 setter 具有类型安全的优势。例如,如果您尝试编写代码getContactN,那么编译器会给您一个错误。因此,尽管它可能会使您的代码变长,但 getter 和 setter 还是不错的。

    另一种方法是使用地图,例如Map&lt;String,String&gt; 存储值。这是更通用的 - 您可以插入任何您喜欢的键 - 并且代码更少,但是它不会为您提供 getter 和 setter 的静态分析优势。如果您拼写错误,只有在执行那段代码时才会发现它 - 如果它位于 if 中,则代码可能不会总是被执行,您可能会错过它。

    使用 getter/setter 和 map 之间也会存在性能差异,但是,我想在 99% 的应用程序中它们是无关紧要的,所以这里不值得指出。如果该代码成为瓶颈,您可以设置时间以查看哪种方法更好 - 但只有在您可以验证您在该领域存在性能问题时才这样做,否则只需使用对您来说更易于维护和更容易的任何技术。

    【讨论】:

    • 非常感谢 Adrian....但是我的 XML 太长了,虽然很容易,但为每个标签制作 getter setter 非常大!!!!我想使用地图,但目前我不确定代码是否有 if 条件
    【解决方案2】:

    我建议您通过编写自己的“容器”类来避免重新发明轮子。相反,您可以考虑使用 JDK 附带的 xjc 等工具直接从 XML 模式生成 Java 类。这种方法有一个巨大的优势——您不必担心任何对 XML 的显式解析,而且 JAXB 代码也会验证您的 XML 内容。

    有关使用 JAXB here 的更多信息。

    编辑:我刚刚发现了 Android 标签,我承认我不确定 javax.xml.bind 包是否随适用于 Android 设备的 JDK 一起提供。然而,谷歌搜索“xml binding android”似乎会带来一些您可以考虑的第三方工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 2011-01-06
      相关资源
      最近更新 更多