2012-02-19 88 views
0

我正在使用簡單模板語言爲現有系統生成遺留系統的XML。這顯然不理想,因爲很難看到生成的XML的結構,它會遇到轉義問題,並且很容易生成無效的XML。Java - 爲遺留系統生成XML

對於任何理智的XML格式,我只需要Xstream或另一個Java XML序列化庫,但是這個遺留系統有很多奇怪的規則,例如「如果該值小於10,該節點應該被排除」和「格式化在節點x中的日期取決於節點y的值「。還有其他奇怪的規則,但這應該足以實現這個想法。

正如我所說的,模板方法遠非想法,但它務實且有效(有一些努力)。用這麼多的格式化規則,有沒有更好的方法來爲遺留系統生成XML? XSL已經超越了我的想法,但在XSL中實現任何數量的邏輯都坦率地說不是很誘人。

回答

1

我不知道,如果這是你在找什麼,但也許嘗試XML綁定如JAXB ...

換句話說:你可以生成從XSD的架構一個類庫,然後建立你的對象圖在java代碼中,然後在一次調用中將它序列化爲xml。

2

基本上你在序列化過程中需要一些自定義邏輯。我猜測內存中的對象結構不是直接鏡像在XML結構中的?替代品:

  1. 使用StAX並在對象內分佈讀寫方法。
  2. 使用JAXB並插入自定義序列化。

甚至沒有想到在java以外的任何東西中表達自定義邏輯,即某些「超級」框架。

+0

你得到它完全正確,Java類不映射一個到一個與XML格式,我肯定不會尋找一個超級框架:)儘管我並不太熱衷於使用特定於序列化的註釋來「污染」域模型,編寫方法以及在應用程序內部用於其他目的的方法。 – Kimble 2012-02-19 22:10:51

+1

如果只有一種XML格式,那麼在模型中添加讀/寫邏輯是okey的,保持面向對象的優先級。但是你會很樂意把邏輯放在讀寫器類中,然後,它們也是一樣的,但是不同。 – ThomasRS 2012-02-19 22:28:40