本文整理汇总了Python中xml.etree.cElementTree.Element.findall方法的典型用法代码示例。如果您正苦于以下问题:Python Element.findall方法的具体用法?Python Element.findall怎么用?Python Element.findall使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xml.etree.cElementTree.Element
的用法示例。
在下文中一共展示了Element.findall方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Item2XML
# 需要导入模块: from xml.etree.cElementTree import Element [as 别名]
# 或者: from xml.etree.cElementTree.Element import findall [as 别名]
class Item2XML(BaseXML):
def __init__(self, path):
BaseXML.__init__(self, path)
if not self.parsed:
self.__create_root()
def __str__(self):
return "[%s - %s]" % (self.__class__.__name__, toString('/'.join(self.path.split('/')[-2:])))
def __len__(self):
items = self.xml_root_element.find('items')
return items.findall('item') and len([item_el for item_el in items.findall('item')]) or 0
def __create_root(self):
self.xml_root_element = Element('root')
SubElement(self.xml_root_element, 'items')
def create_item(self, xml_item):
log.debug("{0} create item - {1}".format(self, toString(xml_item)))
item = self._get_item_cls(xml_item)()
item.id = xml_item.attrib.get('id')
item.addon_id = xml_item.attrib.get('addon_id')
item.ctime = xml_item.attrib.get('ctime')
item.name = xml_item.findtext('name')
item.params = {}
params = xml_item.find('params')
for key, value in params.items():
item.params[key] = value
return self._update_item(item, xml_item)
def _update_item(self, item, xml_item):
return item
def add_item(self, item):
xml_item = self.create_xml_item(item)
if xml_item:
xml_item = self._update_xml_item(xml_item, item)
def update_item(self, item):
if item.id:
self.remove_item(item)
self.add_item(item)
def create_xml_item(self, item):
log.logDebug("%s create xml item - %s"%(self,item))
log.debug("{0} create xml item - {1}".format(self, toString(item)))
import time
from datetime import datetime
t = datetime.now()
t1 = t.timetuple()
uid = int(time.mktime(t1))
if item.id:
item.id = uid
#log.logDebug("%s create xml item - %s already exists, skipping"%(self,item))
#log.debug('{0} create xml item - {1} already exists, skipping'.format(self, toString(item)))
#return
item_id = item.get_id()
if self.find_item_by_id(item_id):
item_id = uid
item.id = uid
#log.logDebug("%s create xml item - %s already exists (2), skipping"%(self,item))
#log.debug('{0} create xml item - {1} already exists, skipping'.format(self, toString(item)))
#return
addon_id = item.addon_id
xml_item = SubElement(self.xml_root_element.find('items'), 'item')
xml_item.set('id', toUnicode(item_id))
xml_item.set('ctime', str(datetime.now()))
if addon_id:
xml_item.set('addon_id', toUnicode(addon_id))
name = SubElement(xml_item, 'name')
name.text = toUnicode(item.name)
params = SubElement(xml_item, 'params')
for key, value in item.params.iteritems():
params.set(toUnicode(key), toUnicode(value))
item.id = item_id
return xml_item
def _update_xml_item(self, xml_item, item):
return xml_item
def get_item(self, item_id):
xml_item = self.find_item_by_id(item_id)
if xml_item:
item = self.create_item(xml_item)
item = self._update_item(item, xml_item)
return item
def get_items(self):
item_list = []
items = self.xml_root_element.find('items')
items = items.findall('item') or []
for xml_item in items:
item = self.create_item(xml_item)
item = self._update_item(item, xml_item)
item_list.append(item)
return item_list
def remove_item(self, item):
#.........这里部分代码省略.........