【发布时间】:2016-08-09 10:02:25
【问题描述】:
假设我有一个 XML:
<?xml version="1.0" encoding="UTF-8"?>
<data>
<level0 id="1" t="0">
<level1 id="lev1id01" att1="2015-05-12" val="12" status="0"/>
<level1 id="lev1id02" att1="2015-06-13" val="13" status="0"/>
<level1 id="lev1id03" att1="2015-07-10" val="13" status="0"/>
</level0>
<level0 id="2" t="0">
<level1 id="lev1id11" att1="2015-05-12" val="121" status="0"/>
<level1 id="lev1id12" att1="2015-06-13" val="132" status="0"/>
<level1 id="lev1id13" att1="2015-07-11" val="113" status="0"/>
</level0>
<level0 id="2" t="1">
<level1 id="lev1id21" att1="2015-05-12" val="121" status="0"/>
<level1 id="lev1id22" att1="2015-06-13" val="132" status="0"/>
<level1 id="lev1id23" att1="2015-07-11" val="113" status="0"/>
<level1 id="lev1id23" att1="2015-07-11" val="113" status="0"/>
</level0>
</data>
我想获取所有level0 节点(使用GPath),它们是:
- 如果
level0/@t="0"则仅当所有其level1子节点具有@status="0"时选择此节点(level0) - 如果
level0/@t!="0"则仅当 lastlevel1子节点具有@status="0"时才选择此节点 (level0)。最后我说的是level1节点,最大值为@att1(假设@att1包含yyyy-mm-dd格式的日期)。
对于 XPath,我会使用 max() 和 count() 之类的函数,但我不知道如何使用 GPath 来完成。
谢谢
【问题讨论】:
标签: groovy xml-parsing xmlslurper gpath