我正在尝试从我的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中添加标准并返回父节点 但结果总是返回具有完整子节点的Match 也就是说,结果与原始结果没有区别 有没有什么好方法可以摆脱那些类型不是Home的事件呢? 谢谢您的帮助!
答案 0 :(得分:0)
如果您的XQuery处理器支持XQuery更新,您可以编写以下内容:
copy $odds-proj := $odds
modify delete node $odds-proj//Event[@type = "Away"]
return $odds-proj
上试用此示例
答案 1 :(得分:0)
如果您使用的是大文件,我建议您使用以下查询:
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上的教程