LINUX.ORG.RU

От Python к .net через XML?


0

1

Есть некоторая программа на python, создающая коллекцию объектов (объекты классов Python с полями простых типов, что-то типа структур). Есть возможность изменить исходный код этой программы так, что бы она генерировала файл с результатами своей работы. Это файл далее необходимо обработать .Net программой.

А теперь вопрос: в каком формате должен быть файл, который выплёвывает python и кушает .Net?

Python из коробки умеет pickle, который использует свой собственный выходной формат, .net из коробки умеет xml... возможно, из Python есть какой-то стандартный метод сгенерировать xml, который потом скушает парсер из .net?

Например, описать одну структуру данных классом python и классом c#:

class Data:
   pass
   
data = Data()
data.value = 42

и

struct Data
{
   public int value;
}

P.S. Примечание по поводу производительности: необходимо в первую очередь ориентироваться на простоту решения, простота - цель. Размер данных небольшой, так что python может взять столько времени на генерацию, сколько ему нужно, так же .net программа может «подумать». В .net хотелось бы использовать стандартный десериалайзер.

omegatype ★★★
() автор топика
Ответ на: комментарий от anonymous

По поводу Internet Communications Engine - поверхностный поиск показал, что это RPC, мне необходим просто механизм генерирования файла с данными.

По поводу protobuf - благодарю за совет, взял на заметку! Однако, .Net/C# реализаций там несколько и все они «сторонние» по отношению к самому protobuf, который умеет только python и c++, что вызывает недоверие к непроверенным продуктам.

omegatype ★★★
() автор топика

Зачем вам классы на стороне python? Если вам нужно сериализовать данные, то достаточно словарей. А уж словарь перегнать в xml - это пара пустяков. Из библиотек для работы с xml могу порекомендовать lxml.

shylent
()
Ответ на: комментарий от shylent

Данные разнородные, логика требует представить их в виде коллекции классов (по сути структур).

omegatype ★★★
() автор топика
Ответ на: комментарий от omegatype

Из коробки вроде бы нет. Но есть pyxml.marshal и lxml.objectify, вот еще интересная ссылка.

buddhist ★★★★★
()

В дополнение к вышеозвученным можно еще так сделать:
1) Python выплевывает pickle
2) IronPython подбирает pickle и XmlSerializer`ует его.
3) C# подбирает то, что выплюнул IronPython.

Кстати, а может все жё заюзать «<struct>» из XML-RPC?

beka
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.