gpt4 book ai didi

XPATH - 无法选择祖父节点

转载 作者:行者123 更新时间:2023-12-03 16:00:39 26 4
gpt4 key购买 nike

我正在尝试解析现场投注 XML 提要,并且需要从代码中获取每个投注。用简单的英语来说,我需要为我的基本查询使用标签“EventSelections”,并在 XML 上“循环”这些标签,这样我就可以获取所有数据,并为我可以在 CMS 上使用的每个数据创建实体。

我的问题是我想在树中的两个位置上升到祖父节点以收集该信息。每个 EventID 指的是游戏的唯一名称,有些游戏比其他游戏有更多的赌注。重要的是我要捕获每个赌注和与之关联的 EventID,问题是,这个 ID 每次都是祖 parent 。示例:

    <Sportsbet Time="2013-08-03T08:38:01.6859354+09:30">
<Competition CompetitionID="18" CompetitionName="Baseball">
<Round RoundID="2549" RoundName="Major League Baseball">
<Event EventID="849849" EventName="Los Angeles Dodgers (H Ryu) At Chicago Cubs (T Wood)" Venue="" EventDate="2013-08-03T05:35:00" Group="MTCH">
<Market Type="Match Betting - BIR" EachWayPlaces="0">
<EventSelections BetSelectionID="75989549" EventSelectionName="Los Angeles Dodgers">
<Bet Odds="1.00" Line=""/>
</EventSelections>
<EventSelections BetSelectionID="75989551" EventSelectionName="Chicago Cubs">
<Bet Odds="17.00" Line=""/>
</EventSelections>

有谁知道我也可以抓取祖 parent 标签吗?

目前我正在使用:

//EventSelections (this is the context)
.//@BetSelectionID
.//@EventSelectionName

我已经尝试了几十种不同的方法来做到这一点,包括 ../.. 运算符,但它也不起作用。对于这方面的任何帮助,我将永远感激不已。谢谢。

最佳答案

我认为你在这棵树上走得还不够远。

../* 是一个带缩写的两步位置浴,扩展为 parent::node()/child::* ...所以实际上第一步是上树,第二步是下树。

因此,../* 给你你的 sibling ( parent 的 child ),../../* 给你你的阿姨和叔叔(祖 parent 的 child ),和 ../../../* 给你你的祖 parent 和它的 sibling (曾祖 parent 的 child )。

对于属性,../@*parent::node()/attribute::* 的缩写,属性附加到元素,它们不是被认为是 child 。所以你是侧身走,而不是第二步下树。

因此,与上面不同的是,../@* 为您提供了您 parent 的属性,而 ../../@* 为您提供了您祖 parent 的属性。

但是在你的情况下使用//确实是不合适的。 ///descendent-or-self::node()/ 的缩写,它所有沿着一棵树一直走到树叶树的。它应该只在极少数情况下使用(当我看到它在 SO 问题上被滥用时我会感到畏缩)。

所以 ..//..//..//@RoundID 可能对你有用,但它实际上是在处理整个树的属性,而不仅仅是你伟大的属性 -祖 parent ,这就是为什么它正在寻找你祖 parent 的属性。 ../../@RoundID 应该是获取祖 parent 属性所需的全部内容。

如果你折磨一个样式表足够长的时间,它最终会为你工作,但它确实更健壮并且可能更快地执行以正确解决问题。

关于XPATH - 无法选择祖父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18027825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com