我正在使用来自多个网站的rss,而我的真正问题在于他们的Pubdate字段,因为他们的大多数PubDate值无论如何我都设法在xpath的帮助下从PubDate字段集中检索值。这就是我写的:
//item/title |
//item/description |
//item/link |
//item/pubDate |
//item/category
我希望将我的结果限制为我在xpath中知道的10条最新消息,我们有一个名为postion()的函数,我必须像下面这样使用它:
[postion() <= 10]
但是当我将这两个xpath查询混合在一起时,我将无法获得正确的结果:
//item/title |
//item/description |
//item/link |
//item/pubDate |
//item/category [position() <= 10]
如何以正确的格式编写此特定xpath查询。 是否有任何关于xpath的快速书?
regads。
答案 0 :(得分:4)
我认为最新消息是最重要的。
使用强>:
(//item)[not(position() > 10)]/*
[self::title or self::description
or self::link or self::pubDate or self::category
]
<强>解释强>:
此表达式选择所有title
,description
,link
,pubDate
和category
元素作为前10个{{1}之一的子元素XML文档中的元素。
通过以下方式尝试选择第一个(或任何位置元素,例如item
)是常见问题解答和经常犯的错误:
item
这将选择文档中作为其父级的第一个子级的所有//item[1]
元素 - 并且可能有许多此类item
元素。
仅选择文档中第一个item
元素的XPath表达式是:
item
要记住的规则:(//item)[1]
运算符的优先级更高(绑定更强),而不是[]
缩写。
答案 1 :(得分:2)
我想将结果限制为最新的10个 一条新闻
/descendant::item[
10 > last()-position()
]/*[
self::title|self::description|self::link|self::pubDate|self::category
]
答案 2 :(得分:0)
你应该试试
//item[position() <= 10]/pubDate
因为你想要第10个项目!