Обходя ElementTree - PullRequest
       4

Обходя ElementTree

0 голосов
/ 11 июня 2010

В моей программе мне нужно использовать объект ElementTree в различных функциях моей программы.

Более конкретно, я делаю это:

tree = etree.parse('somefile.xml')

Я передаю этодерево вокруг в моей программе.

Мне было интересно, является ли это хорошим подходом, или я могу сделать это:

  1. Создать глобальное дерево (я пришел из C ++ фона и знаю, что глобальное плохо)
  2. Создайте дерево снова, где это необходимо.

Или мой подход в порядке?

Ответы [ 3 ]

1 голос
/ 11 июня 2010

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

1 голос
/ 11 июня 2010

В Python (устранение сложностей, проведение аналогии с фоном C ++) все объекты передаются по ссылке.А поскольку «дерево» является объектом, вы только передаете ссылку.Теперь, если у вас есть группа связанных методов, которые работают с одним и тем же деревом, вы можете рассмотреть возможность создания класса с этим объектом дерева в качестве члена.

Кроме того, вот краткий справочник по сложностям, которые я замялсвыше выше: http://www.testingreflections.com/node/view/5126

0 голосов
/ 11 июня 2010

Передача его определенно лучше, чем воссоздание его каждый раз, когда вы захотите его использовать.Разбор файла - дорогая операция. Вот несколько предложений по улучшению производительности с помощью lxml.

...