Совместимость библиотеки XML-сериализации между Java и Python - PullRequest
1 голос
/ 19 января 2011

Я искал библиотеку сериализации xml, которая может сериализовать и десериализовать (Java / Python) объект в xml и обратно.Я использую XStream прямо сейчас для Java.Если бы у XStream была версия Python для десериализации из xml, сгенерированного Xstream, это сделало бы это для меня.Thrift или другие подобные библиотеки не будут работать, если они не позволяют формату данных быть xml.Я ищу предложение для любой библиотеки, которая может это сделать.- Спасибо

Ответы [ 4 ]

1 голос
/ 19 января 2011

Поскольку объекты Java и Python настолько различны сами по себе, сделать это практически невозможно, если только вы с обеих сторон не ограничите допустимые типы и тому подобное.

И в этом случае я бы порекомендовал вамиспользуйте JSON, который является хорошим форматом взаимодействия, даже если это не XML.

В противном случае вы могли бы легко написать библиотеку, которая принимает XStream XML и загружает ее в объекты Python, но она всегда будет ограничена чем-то похожиммежду Java и Python.

0 голосов
/ 19 января 2011

Действительно ли нужно использовать XML?

Для сериализации структурированных данных между Java и Python вы можете рассмотреть Буферы протокола Google .

0 голосов
/ 19 января 2011

Проблема заключается в том, что (как это было предложено в других ответах), XStream - это среда сериализации объектов Java, а не общая структура отображения / привязки данных. Это сделано специально (см. FAQ по XStream): положительным моментом является то, что он может красиво сериализовать и десериализовать все виды Java-объектов "из коробки". Недостатком является то, что результирующая структура XML довольно жесткая, и, хотя вы можете переименовывать вещи, не так много других настроек.

Но XStream - не единственная библиотека Java XML для обработки. Я бы посоветовал проверить справочную реализацию JAXB или JibX в качестве, возможно, лучшей альтернативы, чтобы у вас был больший контроль над XML для обработки. Это может быть необходимо для достижения хорошей совместимости.

0 голосов
/ 19 января 2011

Я не думаю, что вы, вероятно, найдете автоматический способ сериализации объектов Java и десериализации в объекты Python.Это разные вещи, поэтому, если вы хотите перевести, вам придется написать некоторый код на одном или обоих концах.

Если это действительно простые вещи - строки, числа, логические значения и т. Д., ТогдаВозможно, вы захотите взглянуть на json , очень простой формат с привязками практически для каждого языка.Десериализация json-объекта в Python так же проста, как:

json.loads('{"test":false}')

Еще один способ решения этой проблемы - использование Jython, реализации Python в Java, поэтому вы можете напрямую использовать объекты Java.

...