我有一堆带有搜索结果的Yandex.XML文件。 http://api.yandex.com/xml/doc/dg/concepts/response.xml
我想查找所有此类XML文件的查询(//yandexsearch/request/query
),其中第一个网址((//yandexsearch/response/results/grouping/group/doc/url)[1]
)等于某个值(例如http://www.example.org/
)。
使用grep
进行类比,我首先使用-l
标志列出匹配的文档,然后将此类列表传递给xargs xmllint
以提取原始查询,但也许xmllint
(或其他OS X工具)有更好的方法(另外,我还没有找到xmllint
首先在原始匹配中使用与-l
类似的标记。)< / p>
答案 0 :(得分:1)
搜索yandexsearch
元素包含您要查找的网址的response
个元素,然后选择查询。
/yandexsearch[
contains(
(response/results/grouping/group/doc/url)[1],
"http://www.example.org"
)]/request/query
对于该页面上给出的示例XML和搜索字符串http://www.yandex.ru
,它将返回以下元素:
<query>yandex</query>
如果您的搜索字符串始终是网址的前缀,则可能需要使用starts-with(...)
而不是contains(...)
。