[英]How to retrieve parent node with child node that matching certain criteria using xquery?
我正在嘗試從xml文件中獲取部分數據,
源文件是這樣的:
<Odds>
<Match ID="101" Time="A">
<Event type="Home">
<Score="1"/>
</Event>
<Event type="Away">
<Score="2"/>
</Event>
</Match>
<Match ID="102" Time="B">
<Event type="Home">
<Score="1"/>
</Event>
<Event type="Away">
<Score="2"/>
</Event>
</Match>
</Odds>
我想獲取事件類型僅與“主場”匹配的賠率,比賽,事件,得分標簽。
也就是說,結果如下:
<Odds>
<Match ID="101" Time="A">
<Event type="Home">
<Score="1"/>
</Event>
</Match>
<Match ID="102" Time="B">
<Event type="Home">
<Score="1"/>
</Event>
</Match>
</Odds>
我剛接觸XML,讀過一些書。
試圖在xquery的WHERE中添加條件並返回父節點。
但是結果總是返回與完整子節點匹配的結果。
也就是說,結果與原始結果沒有區別。
有什么好方法可以消除類型不是Home的事件?
謝謝您的幫助!
如果您的XQuery處理器支持XQuery更新,則可以編寫以下內容:
copy $odds-proj := $odds
modify delete node $odds-proj//Event[@type = "Away"]
return $odds-proj
您可以在http://28.io/sandbox/index#QzdH/9PIwe11cJnVVZSqhpBdJkQ=上嘗試此示例。
如果使用的是大文件,建議您使用以下查詢:
for $match in $odds/Match
return <Match>
{$match/attribute()}
{$match/element()[@type = "Home"]}
</Match>
您可以在http://28.io/sandbox/index#dwQcDXHxyl69BijJq6o5Mx8Fvrk=上實時查看此示例。此外,如果您希望通過Zorba流式傳輸大型XML文檔,建議您在http://上查看該教程。 www.zorba-xquery.com/html/entry/2012/05/31/XML_Streaming
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.