Перепутанный для использования класса или функции: Запись XML-файлов с помощью lxml и Python

Я должен записать XML-файлы с помощью lxml и Python.

Однако я не могу выяснить, использовать ли a class сделать это или функцию. Точка быть, это - первый раз, когда я разрабатываю надлежащее программное обеспечение и решаю, где и почему использовать a class все еще кажется таинственным.

Я проиллюстрирую свой тезис.

Например, рассмотрите следующий основанный на функции код, который я написал для добавления подэлемента к корню etree.

from lxml import etree

root = etree.Element('document')

def createSubElement(text, tagText = ""):
    etree.SubElement(root, text)
    # How do I do this: element.text = tagText

createSubElement('firstChild')
createSubElement('SecondChild')

Как ожидалось вывод этого:

<document>
  <firstChild/>
  <SecondChild/>
</document>

Однако, поскольку можно заметить комментарий, я понятия не имею, как сделать набор текстовая переменная с помощью этого подхода.

Использует a class единственный способ решить это? И если да, можно дать мне некоторые подсказки по тому, как достигнуть этого?

5
задан user225312 23 May 2010 в 16:33
поделиться

1 ответ

Работает следующий код:

def createSubElement(text, tagText = ""):
    elem = etree.SubElement(root, text)
    elem.text = tagText

createSubElement('firstChild', 'first one')
createSubElement('SecondChild', 'second one')

print etree.tostring(root)

Использование класса, а не функции в основном связано с сохранением состояния в экземплярах класса (в очень немногих случаях использования класс будет иметь смысл, если нет состояния -содержание требуется), что не имеет ничего общего с вашей проблемой - как показывает код, ваша проблема заключалась просто в том, что вы не привязывали какое-либо имя к элементу, возвращенному из вызова SubElement , и, следовательно, конечно вы не смогли в дальнейшем манипулировать этим элементом (например, установив его атрибут text ) в остальной части вашей функции.

3
ответ дан 15 December 2019 в 06:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: