这是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>
如何找到A
= ACT
的元素'Study'
及其子元素,Day
的值最大?这是Java程序:
String xp = "//ACTS[ACT='Study']/A[not(Day < //ACTS[ACT='Study']/A/Day)]";
XPathExpression expr = xpath.compile(xp);
NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
if (null != nl && null != nl.item(0)) {
String abc = nl.item(0).getChildNodes().item(0).getNodeValue();
System.out.println(abc);
}
注意:使用此XPath,我可以通过
获得Day
的最大值
NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
if (null != nl && null != nl.item(0)) {
maxAttemptNumber = nl.item(0).getTextContent();
}
但需要帮助才能获得元素A及其子元素。
答案 0 :(得分:0)
如果您使用的是Java,那么您可以像使用XPath 2.0或XPath 1.0一样轻松使用XQuery(例如使用Saxon库)。答案是
(for $a in //ACTS[ACT="Study"]/A
order by number($a/Day))[last()]