我正在编写一个应用程序,需要在一天内多次向现有的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的简便性相比,它感觉有些盲目。
有没有更好的方法来做到这一点?