【发布时间】:2008-12-16 23:42:35
【问题描述】:
我想做的是只对指定的根元素做出反应。例如,如果用户发送的 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”时做出反应?
【问题讨论】: