我想做的是只对指定的根元素做出反应。例如,如果用户发送如下所示的 XmlStream:
<auth>
<login>user</login>
<pass>dupa.8</pass>
</auth>
我的方法 ._auth 应该被执行。我已经使用在 connectionMade 方法中调用的 addObserver 方法完成了它。
self.addObserver("/auth", self._auth)
AFAIK XPath - 如果我写“/auth”,这意味着我希望我的根元素是“auth”,所以该消息:
<longtagislong>
<auth>...</auth>
</longtagislong>
...应该被拒绝,因为 auth 不是 root。
但是,Twisted 并没有按照我认为的方式工作——我的 _auth 方法在第二条消息出现时执行(树中有 auth 元素),而不是第一条消息——以 auth 元素为根。
所以,我的问题是:如何告诉 Twisted 和 addObserver 方法我只想在根元素的名称是“auth”时做出反应?