diff options
author | Nathan Fritz <fritzy@netflint.net> | 2009-07-11 19:31:20 +0000 |
---|---|---|
committer | Nathan Fritz <fritzy@netflint.net> | 2009-07-11 19:31:20 +0000 |
commit | 226f719597da390057c583e6f83ba850bb4ed334 (patch) | |
tree | 2c9481536418740993f08b70043b3800e067f992 /sleekxmpp/xmlstream/matcher/xpath.py | |
parent | a1ece44368c472bb5ae61e0c4e4a244c07908a6e (diff) | |
download | slixmpp-226f719597da390057c583e6f83ba850bb4ed334.tar.gz slixmpp-226f719597da390057c583e6f83ba850bb4ed334.tar.bz2 slixmpp-226f719597da390057c583e6f83ba850bb4ed334.tar.xz slixmpp-226f719597da390057c583e6f83ba850bb4ed334.zip |
components now ignore namespaces in matching completely for server compatibility
Diffstat (limited to 'sleekxmpp/xmlstream/matcher/xpath.py')
-rw-r--r-- | sleekxmpp/xmlstream/matcher/xpath.py | 18 |
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 |