簡體   English   中英

如何使用XQuery檢索與子節點匹配特定條件的父節點?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM