python Twisted 中的 XPATH 是不是支持这种语法:“/message/body[.='test']”?

Posted

技术标签:

【中文标题】python Twisted 中的 XPATH 是不是支持这种语法:“/message/body[.=\'test\']”?【英文标题】:Does XPATH in python Twisted support this syntax: "/message/body[.='test']"?python Twisted 中的 XPATH 是否支持这种语法:“/message/body[.='test']”? 【发布时间】:2012-03-06 05:56:12 【问题描述】:

我正在开发一个 XMPP 测试工具,使用 Twisted xpath 来匹配 XMPP 消息。

假设我有一个像这样的消息节:

<message to='xxx' type='chat'><body>test</body></message>

如果我想匹配消息的正文值是“test”,那么对于标准 xpath 语法,它将是:

"/message/body[.='test']"

但是twisted 不支持这种语法。

我的问题是:有没有办法解决这个问题?还是根本不可能?

提前致谢。

【问题讨论】:

【参考方案1】:

Twisted Words 为 XMPP 交互提供的 xpath 支持非常有限。它远非完整的 xpath 实现。因此,对于有关它是否支持某些 xpath 功能的任何特定问题,答案很可能是不支持。

理想情况下,Twisted Words 根本不需要 xpath 实现。它可以构建在 Python 可用的其他 xpath 实现之一(例如,由 lxml 公开的那个)之上。但是,目前还没有人确定如何实际实现这一点(考虑到 Twisted Words 也为 XMPP 使用了自定义 DOM 实现)。

在完成该任务之前,您可以通过查看twisted/words/xish/xpathparser.g 末尾的语法来了解支持 xpath 的哪些部分。

据我所知,没有人发明过一种将 Twisted Words DOM 与另一个 xpath 库相结合的方法,所以您只是被缺少的功能所困扰(如果您知道这样的发明,或者发明了这样的东西你自己,让我们知道!这可能会使上述任务更容易:)。

【讨论】:

好的,我明白了。谢谢你的解释。我可能只是使用 xpath 来查找节,然后使用字符串搜索来匹配文本值。

以上是关于python Twisted 中的 XPATH 是不是支持这种语法:“/message/body[.='test']”?的主要内容,如果未能解决你的问题,请参考以下文章

XPath在python中的高级应用

python twisted 模块安装问题

处理 Twisted Web 服务器中的所有资源

爬虫报错:twisted.web._newclient.ResponseNeverReceived

爬虫报错:twisted.web._newclient.ResponseNeverReceived

python之twisted模块安装