генерировать XML с sax2 в Python - PullRequest
0 голосов
/ 19 января 2011

У меня есть модель данных или объект из класса, и мне нужно инициализировать его, читая из файла XML, или создать этот объект с нуля и вывести его в файл XML. Ранее я просто использовал строковые операции из python для чтения xml (file.read + string.find) и записи xml (file.write) без проверки ошибок.

Теперь я думаю использовать Sax2 для этого. Я знаю, как сделать это для чтения, но не очень ясно, о записи. Похоже, что sax2 используется для случая, когда существует оригинальный xml, и вы хотите выводить его после определенных модификаций. В моем случае я хочу вывести свою модель данных в xml, без оригинального xml вообще. Интересно, подходит ли sax2 или подходит для этого, или я должен продолжать использовать свой старый способ. Каков лучший способ ввода / вывода объекта класса из / в XML с помощью Python? Класс очень прост (просто набор списков информации списка, т.е. root -> children -> внучат) и небольшого размера.

Спасибо за любые предложения.

1 Ответ

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

Попробуйте питонный способ обработки XML: ElementTree.

Создать вывод XML легко с `xml.etree.ElementTree.ElementTree.write () .

write(file, encoding="us-ascii", xml_declaration=None, method="xml")

Записывает дерево элементов в файл в формате XML.файл - это имя файла или объект файла, открытый для записи.кодировка 1 - выходная кодировка (по умолчанию US-ASCII).xml_declaration контролирует, нужно ли добавлять в файл объявление XML.Используйте False для никогда, True для всегда, None для только, если не US-ASCII или UTF-8 (по умолчанию None).Метод может быть «xml», «html» или «text» (по умолчанию «xml»).Возвращает закодированную строку.

Пример загрузки ElementTree объект из текстового файла:

>>> from xml.etree.ElementTree import ElementTree
>>> tree = ElementTree()
>>> tree.parse("index.xhtml")
...