什麼是序列化一個Delphi對象樹到XML的好方法 - 使用RTTI而不是自定義代碼?什麼是將Delphi對象樹序列化爲XML的好方法 - 使用RTTI而不是自定義代碼?
我本來希望能夠發現這個特性已經嵌入到Delphi中,但似乎並不存在。
我發現了一些看起來像他們可能會執行此功能的組件(發佈,下面)。你有沒有使用他們或其他產品?你建立了自己的?在Delphi中我錯過了一些明顯的東西嗎?
什麼是序列化一個Delphi對象樹到XML的好方法 - 使用RTTI而不是自定義代碼?什麼是將Delphi對象樹序列化爲XML的好方法 - 使用RTTI而不是自定義代碼?
我本來希望能夠發現這個特性已經嵌入到Delphi中,但似乎並不存在。
我發現了一些看起來像他們可能會執行此功能的組件(發佈,下面)。你有沒有使用他們或其他產品?你建立了自己的?在Delphi中我錯過了一些明顯的東西嗎?
您可以使用JVCL TJvAppXMLFileStorage組件來序列化TPersistent派生類。
uses
JvAppXMLStorage;
var
Storage: TJvAppXMLFileStorage;
begin
Storage := TJvAppXMLFileStorage.Create(nil);
try
Storage.WritePersistent('', MyObject);
Storage.Xml.SaveToFile('S:\TestFiles\Test.xml');
Storage.Xml.LoadFromFile('S:\TestFiles\Test.xml');
Storage.ReadPersistent('', MyObject);
finally
Storage.Free;
end;
end;
JVCL的TJvTranslator.ComponentToXML
鏈接:http://sourceforge.net/project/showfiles.php?group_id=45786&package_id=42327
許可: Mozilla公共許可證( 「MPL」)版本授權1.1
觀察:似乎做遞歸序列化,但它顯然是用於「翻譯」的事實讓我停下來。
華龍網的XML類串行
鏈接:http://www.dragonsoft.us/delphi_vcl.php
許可: Mozilla公共許可證( 「MPL」)1.1版
報價授予許可:允許對通過XML序列化/反序列化VCL對象/組件。存儲/恢復對象的狀態(發佈的屬性)。特殊類支持 - TStrings,TCollection,TPicture。全過程控制。
Simdesign的NativeXml
鏈接:http://www.simdesign.nl/xml.html
許可:€29,95
報價:原生的Delphi XML解析器和作家。獨特功能:直接在XML中存儲,讀取和創建任何TPersistent對象(請參閱示例5)。這是通過使用RTTI(運行時類型信息)遍歷所有對象的已發佈屬性來完成的。此功能僅適用於D5及更高版本。
JVCL是一種選擇,但如果你喜歡小的,獨立的圖書館,有OmniXML(Mozilla公共許可證1.1,http://www.omnixml.com/)。我已經在幾個項目中成功地使用了它,並且我發現它是Delphi中最簡單的XML庫。 OmniXML附帶'OmniXMLPersistent'單元,它像JVCL解決方案那樣通過RTTI完成你所需要的功能。
// saving:
pers : TPersistent;
// SaveToFile is a class method, so no need to instantiate the object:
TOmniXMLWriter.SaveToFile(pers, 'd:\path\file.xml', pfAttributes, ofIndent);
pfAttributes表示屬性將被存儲爲XML元素的屬性; ofIndent將爲可讀性生成一個很好的縮進代碼。
// loading:
TOmniXMLWriter.LoadFromFile(pers, 'd:\path\file.xml');
有趣的替代品!感謝您的建議。 – 2008-12-16 15:10:52
我使用SOAP XML做了一個串行的D2006: http://jankajanos.spaces.live.com/blog/cns!C3E2695FC6F7B0A4!791.entry
但對於D2009通用版了。
不錯的..對於那些不懂匈牙利語「符號」的人...使用此鏈接:http://translate.google.com/translate?hl=zh-CN&sl=hu&tl=zh-CN&u=http://jankajanos.spaces .live.com /博客/ CNS!C3E2695FC6F7B0A4!791.entry – 2009-07-17 08:01:53
我已經上傳了一個新版本。它包含英語評論: http://janosjanka.spaces.live.com/blog/cns!E5C994C03FC0E370!181.entry 此外,它可以通過預先註冊的類類型反序列化對象。 這是一個非常有用的東西,因爲您可以反序列化沒有知道類型的對象。
這個效果非常好!謝謝! – 2008-12-16 00:14:57