summaryrefslogtreecommitdiff
path: root/sleekxmpp/xmlstream/matcher/xpath.py
diff options
context:
space:
mode:
Diffstat (limited to 'sleekxmpp/xmlstream/matcher/xpath.py')
-rw-r--r--sleekxmpp/xmlstream/matcher/xpath.py18
1 files changed, 16 insertions, 2 deletions
diff --git a/sleekxmpp/xmlstream/matcher/xpath.py b/sleekxmpp/xmlstream/matcher/xpath.py
index b141dd87..060d5df3 100644
--- a/sleekxmpp/xmlstream/matcher/xpath.py
+++ b/sleekxmpp/xmlstream/matcher/xpath.py
@@ -1,11 +1,25 @@
from . import base
from xml.etree import cElementTree
+ignore_ns = False
+
class MatchXPath(base.MatcherBase):
def match(self, xml):
x = cElementTree.Element('x')
x.append(xml)
- if x.find(self._criteria) is not None:
+ 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
- return False