2010-10-01 52 views
1

警告:我不知道如何使用XML。如何將條目附加到XML文檔

我有一個簡單的應用程序,其唯一目的是保持關於一個對象的十個屬性(如果你願意的話)。我快速寫下它,並通過將它們附加到純文本文件來編寫這些屬性。問題解決了。

現在,我讀到了像這樣的簡單應用程序,一個XML將是一個很好的選擇。我不打算改變我的劇本(很簡單,它工作得很好),但是這讓我思考。

假設您想使用XML創建日誌。

你如何寫入條目?

您是否閱讀了整個XML文件,追加了條目,然後重寫了整個內容?我不明白的是如何「追加」到一個XML文件,考慮到你不能「追加」到純文本文件的中間而不讀取它,解析它並重新寫入。

請定位我。

乾杯。

回答

1

對於您需要增量追加的任何內容,XML都不太適合。格式良好的XML文檔具有一個包含(幾乎)整個文檔的根元素。例如:

<my-root> 
    <a-child/> 
    <another-child/> 
    <yet-another-child/> 
</my-root> 

追加多生一個孩子在這個例子中會要求你插入<yet-another-child/>和結束</my-root>之間新的孩子。儘管可以在不需要通過尋找<yet-another-child/>的末尾來重寫整個文件並寫入新尾部的情況下實現這一點,但實際上發現該位置足夠複雜以至於堅持使用支持真正附加的東西(例如扁平文本文件)可能是更明智的選擇。

+0

Thanks @Laurence。我認爲「ML不太適合你需要增量追加的任何東西」。 – Escualo 2010-10-01 17:31:04

0

這實際上取決於您用於編寫應用程序的語言,但大多數現代語言都有一個庫,可以在基本框架中或作爲外部庫稱爲XML解析器。

這是一個用於讀取和寫入XML文件的庫。重要的是要看到XML是一個非常分層的數據結構,所以你不能直接以文本文件的形式進入文件並寫入文件。

1

如果我確實必須這樣做,我會構造XML,以便它查看作爲根元素的子項的條目,打開文件,回讀,直到我在關閉標記的開始根元素,寫入新的元素,然後再次寫入根元素。

大多數情況下,我只是不會這樣做。 XML對於日誌條目來說不是一個好的格式(並且我是作爲XML的忠實粉絲)。 I 可能發現將每個條目都作爲XML片段很有用,但即使這樣也不太可能。

如果您確實需要XML日誌格式,請記錄一個更明智的日誌格式,然後根據需要在這些日誌上生成XML報告。如果您旋轉日誌文件(例如,明天寫入appLog20101001.log和明天的appLog20101002.log),那麼您可以通過保留不再附加到的日誌的XML文件進行優化。

0

Log4J提供了XML日誌appender。所以如果你喜歡,你可以用XML條目記錄你的整個應用程序。爲了解析內容,我將使用Java 6中的JAXB內置API。假設您具有XML輸出結構的XDS或XML Schema,則可以派生所有要編輯的類。

相關問題