mirror of
https://github.com/correl/SleekXMPP.git
synced 2024-11-30 19:19:55 +00:00
27 lines
624 B
Python
27 lines
624 B
Python
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
|