我試圖使用Groovy來解析以下XML:Groovy腳本無法解析XML正確
<list>
<list>
<widget>
<fizz id="3" />
<buzz>false</buzz>
<explanations/>
</widget>
<widget>
<fizz id="3" />
<buzz>true</buzz>
<explanations>
<string>What is the meaning of life?</string>
<string>I like the color blue.</string>
</explanations>
</widget>
<widget>
<fizz id="45" />
<buzz>true</buzz>
<explanations>
<string>I could really go for some pizza right now.</string>
</explanations>
</widget>
</list>
</list>
如果<widget/>
元素有true
<buzz/>
孩子,那麼它會啓動所有explanations/string
孩子聚集到主List<String>
。因此,鑑於上面的示例XML,它會以下行爲:
- 首先
list/list/widget/buzz
是false
,所以不要做任何事情 - 二
list/list/widget/buzz
是true
,所以搞串聚集模式:- 第二個
list/list/widget/explanations
有2個<string/>
孩子;他們都添加到主列表(masterList
)
- 第二個
- 三
list/list/widget/buzz
是true
,所以繼續聚集其子字符串放到主列表- 第三
list/list/widget/explanations
有1個小孩<string/>
;它添加到主列表(masterList
)
- 第三
- 的
masterList
目前在這3串:從第3小部件
到目前爲止,這是我最好的嘗試2從第2部件,以及1:
boolean buzzesExist = false;
List<String> masterList = new ArrayList<String>();
use(DOMCategory) {
element.normalize();
element.'widget'.each { widget ->
// If widget/buzz is true, then buzzes exist.
if(widget.'buzz'.text) {
buzzesExist = true;
}
// If buzzes exist, then aggregate all explanation strings into
// into "masterList".
if(buzzesExist) {
for(String exp : widget.'explanations')
masterList.add(exp);
}
}
它運行,而導致masterList
包含各種比扎羅DOM東西在它(太大,我粘貼)。任何Groovy大師都能找到我要去哪裏?提前致謝。
變量buzzesExist永遠不會回到錯誤,所以在第一個小部件發出嗡嗡聲之後,您將alwazs做第二次 – iberbeu 2013-03-06 19:45:53
好抓,但沒關係。稍後在腳本中,我檢查是否有'buzzesExist',並使用它做其他一些事情。 – IAmYourFaja 2013-03-06 19:49:08
你到底在做什麼? – iberbeu 2013-03-06 19:52:59