在解析之后,应该使用哪种数据结构来存储XML的不同标记值

时间:2010-10-22 09:41:38

标签: java android data-structures

我想知道用于存储标签值的数据结构。我的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方法来检索使我的代码变大的值。 有人可以建议吗?

2 个答案:

答案 0 :(得分:1)

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

另一种方法是使用地图,例如Map<String,String>来存储值。这更通用 - 你可以插入你喜欢的任何键 - 并且代码更少,但它不会给你带来getter和setter的静态分析好处。如果你拼错了某些东西,你只会在执行那段代码时发现它 - 如果它在if中,代码可能并不总是被执行而你可能会错过它。

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

答案 1 :(得分:0)

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

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

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