2

ライブ ベッティング XML フィードを解析しようとしていますが、コード内から各ベットを取得する必要があります。簡単に言えば、基本クエリに「EventSelections」タグを使用し、XML でこれらのタグを「ループ」して、すべてのデータを取得し、CMS で使用できる各タグのエンティティを作成する必要があります。

私の問題は、その情報を収集するために、ツリー内の 2 つの場所を祖父母ノードに移動したいということです。各 EventID はゲームの一意の名前を参照し、一部のゲームは他のゲームよりも多くの賭けをしています。各ベットとそれに関連付けられた EventID を取得することが重要です。問題は、この ID が毎回祖父母であるということです。例:

    <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>

granparent タグも取得する方法を知っている人はいますか?

現在私は使用しています:

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

../.. 演算子も機能しないなど、これを行うためにさまざまな方法を試しました。これについての助けに永遠に感謝します。ありがとう。

4

2 に答える 2

4

木の上まで十分に行っていないだけだと思います。

../*は略語を含む 2 ステップのロケーション バスであり、parent::node()/child::*... に展開されます。したがって、実際には、最初のステップでツリーを上りますが、2 番目のステップでツリーを下ります。

したがって、../*あなたの兄弟 (親の子供)、../../*叔母と叔父 (祖父母の子供)、../../../*祖父母とその兄弟 (曾祖父母の子供) があなたに与えられます。

属性の場合、../@*は の省略形でparent::node()/attribute::*あり、属性は要素に付加されますが、それらは子とは見なされません。したがって、2 番目のステップでツリーを下るのではなく、横に進みます。

したがって、上記とは異なり、../@*は親の属性を../../@*与え、 は祖父母の属性を与えます。

しかし//、あなたの状況で使用するのは本当に不適切です。木を下って木の葉まで歩く//の略です。まれな場合にのみ使用する必要があります(SOの質問で悪用されているのを見ると、うんざりします)。/descendent-or-self::node()/

あなた..//..//..//@RoundIDにとってはうまくいくかもしれませんが、実際には、曽祖父母の属性だけでなく、ツリー全体の属性に対処しているため、祖父母の属性を見つけているのです。 ../../@RoundID祖父母の属性を取得するために必要なすべてのはずです。

スタイルシートを十分に長い間苦しめれば、最終的にはうまくいくでしょうが、実際にはより堅牢であり、適切に対処するために実行が高速になる可能性があります.

于 2013-08-03T14:56:03.460 に答える