Большинство объектов в Python представлены как dicts внизу:
>>> class Fred(object) :
... def __init__(self, n) : self.n = n
...
>>> a = Fred(100)
>>> print a.__dict__
{'n': 100}
. Это похоже на вопрос о том, как преобразовать dicts в XML. Существуют инструменты для преобразования dict в / из XML:
Вот простой пример:
>>> import xmltools
>>> d = {'a':1, 'b':2.2, 'c':'three' }
>>> xx = xmltools.WriteToXMLString(d)
>>> print xx
1
2.2
three
На веб-сайте имеется много документации, показывающей примеры:
Руководство по инструментам XML
Трудно преобразовать «точно» между dicts и XML: что такое список? Что вы делаете с атрибутами? Как вы обрабатываете цифровые клавиши? Многие из этих проблем были рассмотрены и обсуждаются в документации по инструментам XML (см. Выше).
Имеет ли значение скорость для вас? Или легкость в использовании? Существует чистый C ++-модуль (все написанный на C ++), чистый модуль Python (все написанный на Python) и модуль расширения Python C (написанный на C ++, но завернутый таким образом, что Python может его вызвать). Модуль C ++ и Python C Extension на несколько порядков быстрее, но, конечно, требует компиляции для продолжения. Модуль Python должен работать, но медленнее:
Altova UModel может генерировать диаграмму последовательности из кода, но я не вижу никакой точки с противоположной стороны.
В любом случае, у UModel есть 30-дневный бесплатный курс, и это действительно отличный инструмент, поэтому вам стоит его проверить.
Вот ссылка.
Диаграмму последовательности из кода в UML можно переделать. Я не знаю ни одного инструмента, создающего java-код из модели диаграммы последовательности !!!
Я никогда не видел инструмента, генерирующего код из диаграммы последовательности в uml или выполняющего обратное преобразование. В частности, потому что диаграммы последовательности должны обеспечивать общий обзор логического потока.
MagicDraw - хороший инструмент. Он написан на Java, и если вы купите правильные плагины, они сделают все за вас.
Однако будьте осторожны, слишком много путешествуя по кругу - это как бы сводит на нет цель проектирования, если вы делаете слишком много. Это означает, что вы на самом деле не проектируете, а затем реализуете дизайн, а, скорее, копаетесь внутри инструмента UML. Руководитель проекта в одной компании, в которой я работал, вообще не разрешал обходных путей и не позволял разработчикам покупать инструменты для этого. Сказав это, это может быть полезно для создания диаграмм из существующей базы кода, которую вы не писали, чтобы получить высокоуровневое представление о дизайне и взаимодействиях.