在Android中重复写入XML文件的最有效方法是什么?

时间:2012-01-21 22:17:14

标签: java android xml

我正在编写一个应用程序,需要在一天内重复地将节点添加到现有的XML文件中。以下是我尝试追加的节点列表示例:

    <gx:Track>
        <when>2012-01-21T14:37:18Z</when>
        <gx:coord>-0.12345 52.12345 274.700</gx:coord>
        <when>2012-01-21T14:38:18Z</when>
        <gx:coord>-0.12346 52.12346 274.700</gx:coord>
        <when>2012-01-21T14:39:18Z</when>
        <gx:coord>-0.12347 52.12347 274.700</gx:coord>
        ....

这可能会在很长一段时间内每秒发生几次,我想知道最好或最有效的方法是什么。

以下是我现在正在做的事情:使用DocumentBuilderFactory解析XML文件,查找容器节点,追加子节点,然后使用TransformerFactory将其写回SD卡。但是,我注意到随着文件变大,这需要花费越来越多的时间。

我试图想出一个更好的方法,这是我唯一能想到的:使用RandomAccessFile加载文件并使用.seek()到文件中的特定位置。我会根据文件长度计算位置,并在我追加之后减去我所知道的文件长度。

我很确定这种方法可行,但与使用DocumentBuilderFactory相比,感觉有点盲目。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您应该尝试使用JAXB。它是大多数Java 1.6 JDK中的Java XML Binding库。 JAXB允许您指定XML Schema Definition文件(并且对DTD有一些实验性支持)。然后,库将编译Java类,供您在代码中使用,然后转换回XML文档。

通过可选的验证支持,它非常​​快速有用。 This将是一个很好的起点。 This将是另一个值得关注的好人。 Eclipse还有一些很棒的工具可以为您生成Java类,并为XSD创建提供了一个很好的GUI工具。我相信Eclipse插件叫做Davi。