""" SleekXMPP: The Sleek XMPP Library Copyright (C) 2010 Nathanael C. Fritz This file is part of SleekXMPP. See the file LICENSE for copying permission. """ from . import base from xml.etree import cElementTree ignore_ns = False class MatchXPath(base.MatcherBase): def match(self, xml): if hasattr(xml, 'xml'): xml = xml.xml x = cElementTree.Element('x') x.append(xml) if not ignore_ns: if x.find(self._criteria) is not None: return True return False else: criteria = [c.split('}')[-1] for c in self._criteria.split('/')] xml = x for tag in criteria: children = [c.tag.split('}')[-1] for c in xml.getchildren()] try: idx = children.index(tag) except ValueError: return False xml = xml.getchildren()[idx] return True