我正在编写一个应用程序,需要在一天内重复地将节点添加到现有的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相比,感觉有点盲目。
有更好的方法吗?