我一直在尋找一個xml序列化庫,可以將(Java/Python)對象序列化並反序列化爲xml和後面的對象。我現在正在使用Java的XStream。如果XStream有一個python版本可以從Xstream生成的xml反序列化,而這些xml會爲我完成。除非數據格式爲xml,否則Thrift或其他類型的庫不會起作用。我正在尋找任何可以做到的圖書館的建議。 - 謝謝Java和Python之間的XML序列化庫互操作性
1
A
回答
1
由於Java和Python對象本身如此不同,所以幾乎不可能做到這一點,除非雙方都限制允許的類型和類似的東西。
在這種情況下,我建議您使用JSON,這是一種很好的互操作性格式,即使它不是XML。
否則,您可以輕鬆編寫一個採用XStream XML並將其加載到Python對象的庫,但它總是受到Java和Python之間相似的限制。
0
我不認爲你很可能會找到一種自動化的方法來將Java對象和反序列化到Python對象中。它們是不同的東西,所以如果你想翻譯,你必須在一端或兩端編寫一些代碼。
如果它真的很簡單 - 字符串,數字,布爾值等,那麼您可能需要查看json,這是一種非常簡單的格式,可以綁定每種語言。 Deserialising在Python JSON對象是簡單的:
json.loads('{"test":false}')
另一種方式來解決這個問題可能是使用的Jython,Python中的在Java中實現,所以你可以使用Java對象直接。
0
問題是(像其他答案一樣)XStream是Java對象序列化框架,而不是通用數據映射/綁定框架。這是有意設計的(請參閱XStream FAQ):好處在於它可以很好地序列化和反序列化所有類型的Java對象。缺點是結果XML結構相當嚴格,雖然您可以重命名,但其他可配置性不多。
但是,XStream不是唯一的Java XML處理庫。我建議檢出JAXB reference implementation或JibX作爲可能更好的選擇,以便您可以更好地控制XML進行處理。這對於實現良好的互操作性可能是必要的。
0
它真的需要使用XML嗎?
對於序列化Java和Python之間的結構化數據,您可能需要考慮Google Protocol Buffers。
相關問題
- 1. Python XML + Java XML互操作性
- 2. System.Windows.Forms.Application和System.Windows.Application之間的互操作性
- 3. Java庫Args4j和Scala之間的互操作2.10
- 4. Java和.Net互操作性
- 5. Scala.List和Java.util.List之間的互操作
- 6. Java和Clojure之間的互操作性和圖形用戶界面的創建
- 7. Java和.net的互操作性
- 8. JavaFX和Java的互操作性
- 9. Ceylon和Java之間的互操作性:如何共享從'ceylon.language'的導入
- 10. boost :: date_time和std :: chrono之間的互操作性
- 11. .Net和iPhone之間的三重DES互操作性?
- 12. VB.NET和PHP之間RSA的互操作性
- 13. Windows XP和Windows 7之間的DCOM互操作性
- 14. Python C互操作性
- 15. C#和非託管C庫之間的互操作
- 16. 實時Java互操作性
- 17. 互操作性:HMACSHA1用Java和DOTNET
- 18. 在Objective-C和Swift之間枚舉互操作性
- 19. 32位和64位應用程序之間的COM互操作
- 20. 如何序列化Scala lambda與Java方法進行互操作?
- 21. Matlab與C#之間的互操作#
- 22. 互操作性
- 23. Matlab的Java的互操作性
- 24. DataContract XML序列化和XML屬性
- 25. .NET和Java之間的子串操作性能比較
- 26. 兩個AES算法之間的互操作性
- 27. C# - Java互操作
- 28. Java .NET互操作
- 29. 屬性的XML序列化
- 30. Hadoop互操作性