coldfusion + xml получить узел по дате - PullRequest
3 голосов
/ 18 февраля 2011

хитрость XML. Я пытаюсь изолировать узел спортивным «Матчем», который в данный момент выполняется или является следующим предстоящим Матчем.

thisScheduleXML:

<Data>
        <Sport type="Union">
            <Schedules>
                <Competition id="48" name="SR" type="Union" group="">
                    <Match id="1684" round="Week 1" previewArticleID="" matchReportArticleID="" status="Upcoming" alternateId="1">
                        <MatchDate startDateLocal="2011-02-18 19:35:00" dayName="Fri" shortDate="18-Feb">2011-02-18 19:35:00</MatchDate>
                        <Venue id="30" timeZoneID="NZDT" gmtMinutes="780" venue="Westpac Stadium" location="Wellington">Westpac Stadium, Wellington</Venue>
                        <HomeTeam id="8" alternateId="428">Hurricanes</HomeTeam>
                        <AwayTeam id="7" alternateId="427">Highlanders</AwayTeam>
                    </Match>
                    <Match id="1685" round="Week 1" previewArticleID="" matchReportArticleID="" status="Upcoming" alternateId="2">
                        <MatchDate startDateLocal="2011-02-11 19:40:00" dayName="Fri" shortDate="18-Feb">2011-02-11 19:40:00</MatchDate>
                        <Venue id="160" timeZoneID="AEDT" gmtMinutes="660" venue="AAMI Park" location="Melbourne">AAMI Park, Melbourne</Venue>
                        <HomeTeam id="76" alternateId="0">Rebels</HomeTeam>
                        <AwayTeam id="12" alternateId="422">Waratahs</AwayTeam>
                    </Match>
                    .. more matches
                </Competition>
                ... more competitions
            </Schedules>
        </Sport> 
    </Data>  

Любая помощь в правильном направлении будет принята с благодарностью. Я бы подумал что-то вроде этого:

<cfset currentMatchNode = xmlSearch(thisScheduleXml,"/SportalData/Sport/Schedules/Match/MatchDate[@startLocalDate is current otherwise the next upcoming one]")>

1 Ответ

2 голосов
/ 18 февраля 2011

Я не смог найти способ сопоставить дату в XPath.Может быть, кто-то еще может помочь с этим.Однако в прошлом мы работали с этим в CF, используя цикл.Например:

<cfset nodes = xmlSearch(x, "/Data/Sport/Schedules/Competition/Match") />
<cfset found = false />    

<cfloop array="#nodes#" index="match">

    <!--- Check to see if the match is on now or in the future --->
    <cfif match["MatchDate"].xmlText gte now()>
        <cfdump var="#match#" />
        <cfset found = true />
    </cfif>

    <!--- Only output the first --->
    <cfif found>
        <cfbreak />
    </cfif>

</cfloop>

Это напечатает узел Match первого совпадения.Надеюсь, это поможет вам в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...