# slixmpp.xmlstream.matcher.xpath# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# Part of Slixmpp: The Slick XMPP Library# :copyright: (c) 2011 Nathanael C. Fritz# :license: MIT, see LICENSE for more detailsfromtypingimportcastfromslixmpp.xmlstream.stanzabaseimportET,fix_ns,StanzaBasefromslixmpp.xmlstream.matcher.baseimportMatcherBase
[docs]classMatchXPath(MatcherBase):""" The XPath matcher selects stanzas whose XML contents matches a given XPath expression. If the value of :data:`IGNORE_NS` is set to ``True``, then XPath expressions will be matched without using namespaces. """_criteria:strdef__init__(self,criteria:str):self._criteria=cast(str,fix_ns(criteria))
[docs]defmatch(self,xml:StanzaBase)->bool:""" Compare a stanza's XML contents to an XPath expression. If the value of :data:`IGNORE_NS` is set to ``True``, then XPath expressions will be matched without using namespaces. :param xml: The :class:`~slixmpp.xmlstream.stanzabase.StanzaBase` stanza to compare against. """real_xml=xml.xmlx=ET.Element('x')x.append(real_xml)returnx.find(self._criteria)isnotNone