簡體   English   中英

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

[英]What is the most efficient way of repeatedly writing to an XML file in Android?

我正在編寫一個應用程序,需要在一天內重復地將節點添加到現有的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相比,感覺有點盲目。

有沒有更好的方法呢?

您應該嘗試使用JAXB。 它是大多數Java 1.6 JDK中的Java XML Binding庫。 JAXB允許您指定XML Schema Definition文件(並且對DTD有一些實驗性支持)。 然后,庫將編譯Java類,以便在代碼中使用,然后轉換回XML文檔。

通過可選的驗證支持,它非常​​快速且有用。 將是一個很好的起點。 將是另一個值得關注的好人。 Eclipse還有一些很棒的工具可以為您生成Java類,並為XSD創建提供了一個很好的GUI工具。 我相信Eclipse插件叫做Davi。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM