Как я могу изменить объект Python в XML? - PullRequest
4 голосов
/ 26 июля 2010

Я хочу преобразовать объект Python в данные XML. Я пробовал lxml, но в итоге мне пришлось написать собственный код для сохранения моего объекта в формате xml, что не идеально.

Я ищу что-то более похожее на pyxser. К сожалению, код Pyxser XML выглядит не так, как мне нужно.

Например, у меня есть свой класс Person

Class Person:
    name = ""
    age = 0
    ids = []

и я хочу преобразовать его в XML-код, похожий на

<Person>
    <name>Mike</name>
    <age> 25 </age>
    <ids>
        <id>1234</id>
        <id>333333</id>
        <id>999494</id>
   </ids>
</Person>

Я не нашел в lxml.objectify метода, который бы брал объект и возвращал код xml.

Ответы [ 2 ]

2 голосов
/ 26 июля 2010

Лучшее - это довольно субъективно, и я не уверен, что можно сказать, что лучше, не зная больше о ваших требованиях. Однако Gnosis имеет , ранее было рекомендовано для сериализации объектов Python в XML, поэтому вы можете начать с этого.

С домашней страницы Gnosis:

Gnosis Utils содержит несколько модулей Python для обработки XML, а также другие общепринятые инструменты:

  • xml.pickle (сериализует объекты в / из XML)
  • API, совместимый со стандартным модулем рассола)
  • xml.objectify (превращает произвольные документы XML в объекты Python)
  • xml.validity (применяет ограничения допустимости XML через DTD или схему)
  • xml.indexer (полнотекстовая индексация / поиск)
  • много больше ...

Другой вариант: lxml.objectify .

0 голосов
/ 12 марта 2011

Mike

Вы можете реализовать рендеринг объектов в XML:

class Person:
  ...
  def toXml( self):
    print '<Person>'
    print '\t<name>...</name>
    ...
    print '</Person>'

или вы можете преобразовать вывод Gnosis или pyxser, используя XSLT.

...