当前位置: 首页>>代码示例>>Python>>正文


Python Element.findall方法代码示例

本文整理汇总了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):
#.........这里部分代码省略.........
开发者ID:mx3L,项目名称:archivczsk,代码行数:103,代码来源:serialize.py


注:本文中的xml.etree.cElementTree.Element.findall方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。