python - XmlStream.addObserver 中的 XPath 无法按应有的方式工作

标签 python twisted

我想要做的是仅对指定的根元素使用react。例如,如果用户发送如下所示的 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”时使用react?

最佳答案

好吧,我终于得到答案了。这是因为 XmlStream 本身。只要主根元素未关闭,连接就处于事件状态(例如: <stream/> )。其中的所有内容都是 XPath 的根元素,这就是为什么“/auth”意味着 <stream><auth></auth></stream> .

关于python - XmlStream.addObserver 中的 XPath 无法按应有的方式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/373189/

相关文章:

python - Twisted HTTP 代理 channel 在 LostConnection 上设置为 None 但 LostConnection 尚未被调用

python - Autobahn 和 Twisted,调用 wamp 客户端方法并通过 HTTP 获取结果

python - 在扭曲中使用上下文

python - 将基于 python-twisted 的代码移植到 scala : framework advice needed

python - 如何在 Django 日期字段中有日历的东西

python - 了解变位词检测的线性运行时实现

python - 确定物体与其反射之间的距离

Python/Twisted 多用户服务器 - 哪个更高效?

python - 不同屏幕上的 cv2.imshow()

python - BeautifulSoup "encode("utf-8")