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']”?的主要内容,如果未能解决你的问题,请参考以下文章
爬虫报错:twisted.web._newclient.ResponseNeverReceived