考虑给定的XML
<root>
<ACTS>
<Act>Play</Act>
<A>
<Day>1</Day>
<time>Fri Feb 28 13:21:42 IST 2014</time>
</A>
<A>
<Day>2</Day>
<time>Fri Feb 28 13:21:43 IST 2014</time>
</A>
</ACTS>
<ACTS>
<Act>Study</Act>
<A>
<Day>1</Day>
<time>Fri Feb 28 13:21:42 IST 2014</time>
</A>
<A>
<Day>2</Day>
<time>Fri Feb 28 13:21:43 IST 2014</time>
</A>
<A>
<Day>3</Day>
<time>Fri Feb 28 13:21:43 IST 2014</time>
</A>
</ACTS>
</root>
如何找到Act = Study的最长日期? 如何找到Act = Study的最短日期? 是否可以以任何调整的方式定义此xml
答案 0 :(得分:0)
此XPath语句将从<A>
元素返回<Child>
元素Act=Study
,其中Day
值最大为//ACTS[Act='Study']/A/Day[not(. < //ACTS[Act='Study']/A/Day)][1]/..
:
<A>
,这个将返回Day
元素,其值最小为//ACTS[Act='Study']/A/Day[not(. > //ACTS[Act='Study']/A/Day)][1]/..
:
>
要了解如何选择最小值和最大值,请分别使用<
和{检查更简单的方案in this post(从答案中替换>
和<
{1}})。
我使用该帖子中的相同概念来获取最小/最大<Day>
元素,然后选择它的父<A>
(最后使用/..
)。
答案 1 :(得分:0)
使用 XPath 1.0 ,这是Java支持的唯一本机版本,您只能通过检查是否没有大于/小于他的元素来查找最大值/最小值。要查找最长日期的<A/>
标记(或标记,如果它们共享值),请执行
//ACTS[Act='Study']/A[not(Day < //ACTS[Act='Study']/A/Day)]
请注意<
运算符的“set-semantics”:如果左侧的任何元素小于任何元素在右侧。因此,如果没有其他具有更大值的<Day/>
元素,则谓词将返回evaluate。
对于最小值,只需将运算符与>
交换。
如果您可以嵌入像
max(//ACTS[Act='Study']/A/Day)
要查找具有最大日期值的实际元素,请与最大值进行比较:
//ACTS[Act='Study']/A[Day = max(//ACTS[Act='Study']/A/Day)]