|
Cetus Group
Информационные системы и программное обеспечение
Меню
Поддержка
E-mail:
cetus@ukr.net
|
Хитрые вещи в Python
Редакция 29.08.2006
А.Г. © Часть 2 - "Получение контента иерархической структуры"При решении некоторых задач может потребоваться формирование контента для дерева посредством рекурсивного обхода узлов. Примерами таких задач могут быть формирование XML- или HTML-документа. Представленная ниже программа формирует узлы дерева и выполняет рекурсивный обход при получении контента.
Программа состоит из двух частей:
class CsTag: def __init__(self,parent,text=""): self.parent = parent self.txt=text self.factory = [] if self.parent: self.parent.addItem(self) def addItem(self,item): self.factory.append(item) def content(self): if len(self.factory) == 0: return self.txt if len(self.txt): st = self.txt + "," + "[" else: st = "[" for i in self.factory: st = st + i.content() + "," return st[:-1] + "]" #!/usr/bin/python # -*- coding: UTF-8 -*- from cstag import * # формируем модель документа list = CsTag(None) mark1 = CsTag(list,"Альфа") sect11 = CsTag(mark1,"Хлеб") CsTag(sect11,"Миша") CsTag(sect11,"Петя") sect12 = CsTag(mark1,"Молоко") CsTag(sect12,"Маша") mark2 = CsTag(list,"Гамма") sect21 = CsTag(mark2,"Хлеб") CsTag(sect21,"Лена") # запрашиваем контент print list.content() В функции content() классa CsTag вместо дополнения контента символами '[' и ']' могут быть добавлены соответствующие назначению данных теги, в этом случае легко может быть получен документ в формате XML или HTML.
В результате выполнения этой программы имеем следующее:
|