XML Help

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Mark Cooney

    #1

    XML Help

    OK this might be long winded by want to show you everything I am doing.

    Down below is the result I get from an API Call to a website called Betfair.

    The following is some code I am trying, but I have also tried many different
    variations.
    Dim response As HttpWebResponse = request.GetResp onse()

    'Get the response stream
    Dim reader As StreamReader = New StreamReader(re sponse.GetRespo nseStream)

    Dim objDoc As New System.Xml.XmlD ocument
    objDoc.Load(rea der)

    Dim Node As XmlNode = objDoc.SelectSi ngleNode("/channel/status")
    MsgBox(Node.Val ue)

    I am trying to the word "RUNNING" from within line 3 of the call but instead
    I am getting NullReferenceEx ception.
    I want to keep my code as simple as possible and I will want to pull other
    information such as the id attribute from line 4 of the call.

    Can anyone help?
    MC


    API Call Returns the following:
    <channelSnapsho t>
    <channel gameType="POKER " id="1444074" name="Exchange Poker Texas
    Hold'em">
    <status>RUNNING </status>
    <game id="1817283">
    <round>3</round>
    <bettingWindowT ime>45</bettingWindowTi me>
    <bettingWindowP ercentageComple te>24</bettingWindowPe rcentageComplet e>
    <gameData>
    <object name="Hand 1">
    <description>On e Pair, Fours, Ace High,
    with Q, 8 Kickers</description>
    <status>IN_PLAY </status>
    <property name="Card 1" value="20"/>
    <property name="Card 2" value="29"/>
    </object>
    <object name="Hand 2">
    <description>On e Pair, Sixes, Ace
    High</description>
    <status>IN_PLAY </status>
    <property name="Card 1" value="5"/>
    <property name="Card 2" value="44"/>
    </object>
    <object name="Hand 3">
    <description>On e Pair, Fours, Ace High,
    with Q, 6 Kickers</description>
    <status>IN_PLAY </status>
    <property name="Card 1" value="31"/>
    <property name="Card 2" value="42"/>
    </object>
    <object name="Hand 4">
    <description>Ac e High</description>
    <status>IN_PLAY </status>
    <property name="Card 1" value="49"/>
    <property name="Card 2" value="45"/>
    </object>
    <object name="Community Cards">
    <description/>
    <status>N/A</status>
    <property name="Card 1" value="3"/>
    <property name="Card 2" value="13"/>
    <property name="Card 3" value="11"/>
    <property name="Card 4" value="NOT
    AVAILABLE"/>
    <property name="Card 5" value="NOT
    AVAILABLE"/>
    </object>
    </gameData>
    <markets currency="GBP">
    <market id="5615051">
    <status>ACTIV E</status>
    <commissionRate >2.5</commissionRate>
    <marketType>WIN _ONLY</marketType>
    <selections type="MainBets" >
    <selection id="658439">
    <name>Hand 1</name>
    <resource
    href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8439"
    responseType="s electionTradeAc tivity" title="Trade Activity"/>
    <status>IN_PLAY </status>
    <amountMatched> 22.74</amountMatched>
    <bestAvailableT oBackPrices>
    <price
    amountUnmatched ="204.42">6. 6</price>
    <price
    amountUnmatched ="381.64">6. 55</price>
    <price
    amountUnmatched ="576.92">6. 5</price>
    </bestAvailableTo BackPrices>
    <bestAvailableT oLayPrices>
    <price
    amountUnmatched ="74.6">6.7</price>
    <price
    amountUnmatched ="504.74">6. 75</price>
    <price
    amountUnmatched ="551.44">6. 8</price>
    </bestAvailableTo LayPrices>
    </selection>
    <selection id="658440">
    <name>Hand 2</name>
    <resource
    href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8440"
    responseType="s electionTradeAc tivity" title="Trade Activity"/>
    <status>IN_PLAY </status>
    <amountMatched> 88.68</amountMatched>
    <bestAvailableT oBackPrices>
    <price
    amountUnmatched ="306.66">1. 72</price>
    <price
    amountUnmatched ="4127.36">1.71 </price>
    <price
    amountUnmatched ="59.63">1.7 </price>
    </bestAvailableTo BackPrices>
    <bestAvailableT oLayPrices>
    <price
    amountUnmatched ="99.98">1.7 3</price>
    <price
    amountUnmatched ="2188.96">1.74 </price>
    <price
    amountUnmatched ="2200.77">1.75 </price>
    </bestAvailableTo LayPrices>
    </selection>
    <selection id="658441">
    <name>Hand 3</name>
    <resource
    href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8441"
    responseType="s electionTradeAc tivity" title="Trade Activity"/>
    <status>IN_PLAY </status>
    <amountMatched> 102.9</amountMatched>
    <bestAvailableT oBackPrices>
    <price
    amountUnmatched ="17.99">45. 0</price>
    <price
    amountUnmatched ="140.4">44. 5</price>
    <price
    amountUnmatched ="2.19">44.0 </price>
    </bestAvailableTo BackPrices>
    <bestAvailableT oLayPrices>
    <price
    amountUnmatched ="33.52">46. 0</price>
    <price
    amountUnmatched ="53.76">46. 5</price>
    <price
    amountUnmatched ="79.76">47. 0</price>
    </bestAvailableTo LayPrices>
    </selection>
    <selection id="658442">
    <name>Hand 4</name>
    <resource
    href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8442"
    responseType="s electionTradeAc tivity" title="Trade Activity"/>
    <status>IN_PLAY </status>
    <amountMatched> 1020.0</amountMatched>
    <bestAvailableT oBackPrices>
    <price
    amountUnmatched ="158.07">4. 0</price>
    <price
    amountUnmatched ="198.19">3. 98</price>
    <price
    amountUnmatched ="631.28">3. 96</price>
    </bestAvailableTo BackPrices>
    <bestAvailableT oLayPrices>
    <price
    amountUnmatched ="103.84">4. 06</price>
    <price
    amountUnmatched ="612.72">4. 08</price>
    <price
    amountUnmatched ="914.6">4.1 </price>
    </bestAvailableTo LayPrices>
    </selection>
    </selections>
    </market>
    </markets>
    </game>
    </channel>
    </channelSnapshot >



  • Stephany Young

    #2
    Re: XML Help

    Your:

    Dim Node As XmlNode = objDoc.SelectSi ngleNode("/channel/status")

    is the issue. The SelectSingleNod e method is relative to your current scope
    (or position in the XmlDocument).

    Your XPath expression is saying, get me the first status child element of
    the first channel child element from where I am current at.

    You are executing it from the objDoc object which does not have any channel
    child elements. It has a single child element called channelSnapshot .

    You can use this syntax:

    Dim Node As XmlNode =
    objDoc.Document Element.SelectS ingleNode("/channel/status")

    which uses the same XPath expession but 'moves' the starting point to the
    channelSnapshot element, or you can use this syntax:

    Dim Node As XmlNode = objDoc.SelectSi ngleNode("//channel/status")

    where the // indicates 'any descendant' element.

    To get the value you then need to use:

    Dim status As String = Node.InnerText

    Like wise the next bit would be:


    Node = objDoc.SelectSi ngleNode("//channel/game")

    Dim id As String = Node.Attibbutes ("id").Value


    "Mark Cooney" <mark@mcooney.c o.ukwrote in message
    news:eDhiHBXVHH A.3568@TK2MSFTN GP06.phx.gbl...
    OK this might be long winded by want to show you everything I am doing.
    >
    Down below is the result I get from an API Call to a website called
    Betfair.
    >
    The following is some code I am trying, but I have also tried many
    different
    variations.
    Dim response As HttpWebResponse = request.GetResp onse()
    >
    'Get the response stream
    Dim reader As StreamReader = New StreamReader(re sponse.GetRespo nseStream)
    >
    Dim objDoc As New System.Xml.XmlD ocument
    objDoc.Load(rea der)
    >
    Dim Node As XmlNode = objDoc.SelectSi ngleNode("/channel/status")
    MsgBox(Node.Val ue)
    >
    I am trying to the word "RUNNING" from within line 3 of the call but
    instead
    I am getting NullReferenceEx ception.
    I want to keep my code as simple as possible and I will want to pull other
    information such as the id attribute from line 4 of the call.
    >
    Can anyone help?
    MC
    >
    >
    API Call Returns the following:
    <channelSnapsho t>
    <channel gameType="POKER " id="1444074" name="Exchange Poker Texas
    Hold'em">
    <status>RUNNING </status>
    <game id="1817283">
    <round>3</round>
    <bettingWindowT ime>45</bettingWindowTi me>
    >
    <bettingWindowP ercentageComple te>24</bettingWindowPe rcentageComplet e>
    <gameData>
    <object name="Hand 1">
    <description>On e Pair, Fours, Ace High,
    with Q, 8 Kickers</description>
    <status>IN_PLAY </status>
    <property name="Card 1" value="20"/>
    <property name="Card 2" value="29"/>
    </object>
    <object name="Hand 2">
    <description>On e Pair, Sixes, Ace
    High</description>
    <status>IN_PLAY </status>
    <property name="Card 1" value="5"/>
    <property name="Card 2" value="44"/>
    </object>
    <object name="Hand 3">
    <description>On e Pair, Fours, Ace High,
    with Q, 6 Kickers</description>
    <status>IN_PLAY </status>
    <property name="Card 1" value="31"/>
    <property name="Card 2" value="42"/>
    </object>
    <object name="Hand 4">
    <description>Ac e High</description>
    <status>IN_PLAY </status>
    <property name="Card 1" value="49"/>
    <property name="Card 2" value="45"/>
    </object>
    <object name="Community Cards">
    <description/>
    <status>N/A</status>
    <property name="Card 1" value="3"/>
    <property name="Card 2" value="13"/>
    <property name="Card 3" value="11"/>
    <property name="Card 4" value="NOT
    AVAILABLE"/>
    <property name="Card 5" value="NOT
    AVAILABLE"/>
    </object>
    </gameData>
    <markets currency="GBP">
    <market id="5615051">
    <status>ACTIV E</status>
    <commissionRate >2.5</commissionRate>
    <marketType>WIN _ONLY</marketType>
    <selections type="MainBets" >
    <selection id="658439">
    <name>Hand 1</name>
    <resource
    href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8439"
    responseType="s electionTradeAc tivity" title="Trade Activity"/>
    <status>IN_PLAY </status>
    >
    <amountMatched> 22.74</amountMatched>
    <bestAvailableT oBackPrices>
    <price
    amountUnmatched ="204.42">6. 6</price>
    <price
    amountUnmatched ="381.64">6. 55</price>
    <price
    amountUnmatched ="576.92">6. 5</price>
    </bestAvailableTo BackPrices>
    <bestAvailableT oLayPrices>
    <price
    amountUnmatched ="74.6">6.7</price>
    <price
    amountUnmatched ="504.74">6. 75</price>
    <price
    amountUnmatched ="551.44">6. 8</price>
    </bestAvailableTo LayPrices>
    </selection>
    <selection id="658440">
    <name>Hand 2</name>
    <resource
    href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8440"
    responseType="s electionTradeAc tivity" title="Trade Activity"/>
    <status>IN_PLAY </status>
    >
    <amountMatched> 88.68</amountMatched>
    <bestAvailableT oBackPrices>
    <price
    amountUnmatched ="306.66">1. 72</price>
    <price
    amountUnmatched ="4127.36">1.71 </price>
    <price
    amountUnmatched ="59.63">1.7 </price>
    </bestAvailableTo BackPrices>
    <bestAvailableT oLayPrices>
    <price
    amountUnmatched ="99.98">1.7 3</price>
    <price
    amountUnmatched ="2188.96">1.74 </price>
    <price
    amountUnmatched ="2200.77">1.75 </price>
    </bestAvailableTo LayPrices>
    </selection>
    <selection id="658441">
    <name>Hand 3</name>
    <resource
    href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8441"
    responseType="s electionTradeAc tivity" title="Trade Activity"/>
    <status>IN_PLAY </status>
    >
    <amountMatched> 102.9</amountMatched>
    <bestAvailableT oBackPrices>
    <price
    amountUnmatched ="17.99">45. 0</price>
    <price
    amountUnmatched ="140.4">44. 5</price>
    <price
    amountUnmatched ="2.19">44.0 </price>
    </bestAvailableTo BackPrices>
    <bestAvailableT oLayPrices>
    <price
    amountUnmatched ="33.52">46. 0</price>
    <price
    amountUnmatched ="53.76">46. 5</price>
    <price
    amountUnmatched ="79.76">47. 0</price>
    </bestAvailableTo LayPrices>
    </selection>
    <selection id="658442">
    <name>Hand 4</name>
    <resource
    href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8442"
    responseType="s electionTradeAc tivity" title="Trade Activity"/>
    <status>IN_PLAY </status>
    >
    <amountMatched> 1020.0</amountMatched>
    <bestAvailableT oBackPrices>
    <price
    amountUnmatched ="158.07">4. 0</price>
    <price
    amountUnmatched ="198.19">3. 98</price>
    <price
    amountUnmatched ="631.28">3. 96</price>
    </bestAvailableTo BackPrices>
    <bestAvailableT oLayPrices>
    <price
    amountUnmatched ="103.84">4. 06</price>
    <price
    amountUnmatched ="612.72">4. 08</price>
    <price
    amountUnmatched ="914.6">4.1 </price>
    </bestAvailableTo LayPrices>
    </selection>
    </selections>
    </market>
    </markets>
    </game>
    </channel>
    </channelSnapshot >
    >
    >
    >

    Comment

    • Mark Cooney

      #3
      Re: XML Help

      Stephany

      Thanks for your help, I have made the changes and tried variations but
      unfortunately I am still getting same.

      This is the code I have now:

      Dim response As HttpWebResponse = request.GetResp onse()

      'Get the response stream

      Dim reader As StreamReader = New StreamReader(re sponse.GetRespo nseStream)

      Dim objDoc As New System.Xml.XmlD ocument

      objDoc.Load(rea der)

      Dim Node As XmlNode =
      objDoc.Document Element.SelectS ingleNode("//channelSnapshot/channel/status")

      MsgBox(Node.Inn erText)

      Do you have a sample piece of code I could look at?

      Regards

      "Stephany Young" <noone@localhos twrote in message
      news:uuUdlfXVHH A.4828@TK2MSFTN GP05.phx.gbl...
      Your:
      >
      Dim Node As XmlNode = objDoc.SelectSi ngleNode("/channel/status")
      >
      is the issue. The SelectSingleNod e method is relative to your current
      scope (or position in the XmlDocument).
      >
      Your XPath expression is saying, get me the first status child element of
      the first channel child element from where I am current at.
      >
      You are executing it from the objDoc object which does not have any
      channel child elements. It has a single child element called
      channelSnapshot .
      >
      You can use this syntax:
      >
      Dim Node As XmlNode =
      objDoc.Document Element.SelectS ingleNode("/channel/status")
      >
      which uses the same XPath expession but 'moves' the starting point to the
      channelSnapshot element, or you can use this syntax:
      >
      Dim Node As XmlNode = objDoc.SelectSi ngleNode("//channel/status")
      >
      where the // indicates 'any descendant' element.
      >
      To get the value you then need to use:
      >
      Dim status As String = Node.InnerText
      >
      Like wise the next bit would be:
      >
      >
      Node = objDoc.SelectSi ngleNode("//channel/game")
      >
      Dim id As String = Node.Attibbutes ("id").Value
      >
      >
      "Mark Cooney" <mark@mcooney.c o.ukwrote in message
      news:eDhiHBXVHH A.3568@TK2MSFTN GP06.phx.gbl...
      >OK this might be long winded by want to show you everything I am doing.
      >>
      >Down below is the result I get from an API Call to a website called
      >Betfair.
      >>
      >The following is some code I am trying, but I have also tried many
      >different
      >variations.
      >Dim response As HttpWebResponse = request.GetResp onse()
      >>
      >'Get the response stream
      >Dim reader As StreamReader = New StreamReader(re sponse.GetRespo nseStream)
      >>
      >Dim objDoc As New System.Xml.XmlD ocument
      >objDoc.Load(re ader)
      >>
      >Dim Node As XmlNode = objDoc.SelectSi ngleNode("/channel/status")
      >MsgBox(Node.Va lue)
      >>
      >I am trying to the word "RUNNING" from within line 3 of the call but
      >instead
      >I am getting NullReferenceEx ception.
      >I want to keep my code as simple as possible and I will want to pull
      >other
      >information such as the id attribute from line 4 of the call.
      >>
      >Can anyone help?
      >MC
      >>
      >>
      >API Call Returns the following:
      ><channelSnapsh ot>
      > <channel gameType="POKER " id="1444074" name="Exchange Poker Texas
      >Hold'em">
      > <status>RUNNING </status>
      > <game id="1817283">
      > <round>3</round>
      > <bettingWindowT ime>45</bettingWindowTi me>
      >>
      ><bettingWindow PercentageCompl ete>24</bettingWindowPe rcentageComplet e>
      > <gameData>
      > <object name="Hand 1">
      > <description>On e Pair, Fours, Ace High,
      >with Q, 8 Kickers</description>
      > <status>IN_PLAY </status>
      > <property name="Card 1" value="20"/>
      > <property name="Card 2" value="29"/>
      > </object>
      > <object name="Hand 2">
      > <description>On e Pair, Sixes, Ace
      >High</description>
      > <status>IN_PLAY </status>
      > <property name="Card 1" value="5"/>
      > <property name="Card 2" value="44"/>
      > </object>
      > <object name="Hand 3">
      > <description>On e Pair, Fours, Ace High,
      >with Q, 6 Kickers</description>
      > <status>IN_PLAY </status>
      > <property name="Card 1" value="31"/>
      > <property name="Card 2" value="42"/>
      > </object>
      > <object name="Hand 4">
      > <description>Ac e High</description>
      > <status>IN_PLAY </status>
      > <property name="Card 1" value="49"/>
      > <property name="Card 2" value="45"/>
      > </object>
      > <object name="Community Cards">
      > <description/>
      > <status>N/A</status>
      > <property name="Card 1" value="3"/>
      > <property name="Card 2" value="13"/>
      > <property name="Card 3" value="11"/>
      > <property name="Card 4" value="NOT
      >AVAILABLE"/>
      > <property name="Card 5" value="NOT
      >AVAILABLE"/>
      > </object>
      > </gameData>
      > <markets currency="GBP">
      > <market id="5615051">
      > <status>ACTIV E</status>
      > <commissionRate >2.5</commissionRate>
      > <marketType>WIN _ONLY</marketType>
      > <selections type="MainBets" >
      > <selection id="658439">
      > <name>Hand 1</name>
      > <resource
      >href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8439"
      >responseType=" selectionTradeA ctivity" title="Trade Activity"/>
      > <status>IN_PLAY </status>
      >>
      ><amountMatched >22.74</amountMatched>
      > <bestAvailableT oBackPrices>
      > <price
      >amountUnmatche d="204.42">6. 6</price>
      > <price
      >amountUnmatche d="381.64">6.55 </price>
      > <price
      >amountUnmatche d="576.92">6. 5</price>
      > </bestAvailableTo BackPrices>
      > <bestAvailableT oLayPrices>
      > <price
      >amountUnmatche d="74.6">6.7</price>
      > <price
      >amountUnmatche d="504.74">6.75 </price>
      > <price
      >amountUnmatche d="551.44">6. 8</price>
      > </bestAvailableTo LayPrices>
      > </selection>
      > <selection id="658440">
      > <name>Hand 2</name>
      > <resource
      >href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8440"
      >responseType=" selectionTradeA ctivity" title="Trade Activity"/>
      > <status>IN_PLAY </status>
      >>
      ><amountMatched >88.68</amountMatched>
      > <bestAvailableT oBackPrices>
      > <price
      >amountUnmatche d="306.66">1.72 </price>
      > <price
      >amountUnmatche d="4127.36">1.7 1</price>
      > <price
      >amountUnmatche d="59.63">1.7 </price>
      > </bestAvailableTo BackPrices>
      > <bestAvailableT oLayPrices>
      > <price
      >amountUnmatche d="99.98">1.7 3</price>
      > <price
      >amountUnmatche d="2188.96">1.7 4</price>
      > <price
      >amountUnmatche d="2200.77">1.7 5</price>
      > </bestAvailableTo LayPrices>
      > </selection>
      > <selection id="658441">
      > <name>Hand 3</name>
      > <resource
      >href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8441"
      >responseType=" selectionTradeA ctivity" title="Trade Activity"/>
      > <status>IN_PLAY </status>
      >>
      ><amountMatched >102.9</amountMatched>
      > <bestAvailableT oBackPrices>
      > <price
      >amountUnmatche d="17.99">45. 0</price>
      > <price
      >amountUnmatche d="140.4">44. 5</price>
      > <price
      >amountUnmatche d="2.19">44.0 </price>
      > </bestAvailableTo BackPrices>
      > <bestAvailableT oLayPrices>
      > <price
      >amountUnmatche d="33.52">46. 0</price>
      > <price
      >amountUnmatche d="53.76">46. 5</price>
      > <price
      >amountUnmatche d="79.76">47. 0</price>
      > </bestAvailableTo LayPrices>
      > </selection>
      > <selection id="658442">
      > <name>Hand 4</name>
      > <resource
      >href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8442"
      >responseType=" selectionTradeA ctivity" title="Trade Activity"/>
      > <status>IN_PLAY </status>
      >>
      ><amountMatched >1020.0</amountMatched>
      > <bestAvailableT oBackPrices>
      > <price
      >amountUnmatche d="158.07">4. 0</price>
      > <price
      >amountUnmatche d="198.19">3.98 </price>
      > <price
      >amountUnmatche d="631.28">3.96 </price>
      > </bestAvailableTo BackPrices>
      > <bestAvailableT oLayPrices>
      > <price
      >amountUnmatche d="103.84">4.06 </price>
      > <price
      >amountUnmatche d="612.72">4.08 </price>
      > <price
      >amountUnmatche d="914.6">4.1 </price>
      > </bestAvailableTo LayPrices>
      > </selection>
      > </selections>
      > </market>
      > </markets>
      > </game>
      > </channel>
      > </channelSnapshot >
      >>
      >>
      >>
      >

      Comment

      • Stephany Young

        #4
        Re: XML Help

        I gave you the code!!!!

        Why did you change:

        Dim Node As XmlNode = objDoc.SelectSi ngleNode("//channel/status")

        to

        Dim Node As XmlNode =
        objDoc.Document Element.SelectS ingleNode("//channelSnapshot/channel/status")

        Notice the difference!!!!! !


        "Mark Cooney" <mark@mcooney.c o.ukwrote in message
        news:%23QDp$9ZV HHA.1212@TK2MSF TNGP03.phx.gbl. ..
        Stephany
        >
        Thanks for your help, I have made the changes and tried variations but
        unfortunately I am still getting same.
        >
        This is the code I have now:
        >
        Dim response As HttpWebResponse = request.GetResp onse()
        >
        'Get the response stream
        >
        Dim reader As StreamReader = New StreamReader(re sponse.GetRespo nseStream)
        >
        Dim objDoc As New System.Xml.XmlD ocument
        >
        objDoc.Load(rea der)
        >
        Dim Node As XmlNode =
        objDoc.Document Element.SelectS ingleNode("//channelSnapshot/channel/status")
        >
        MsgBox(Node.Inn erText)
        >
        Do you have a sample piece of code I could look at?
        >
        Regards
        >
        "Stephany Young" <noone@localhos twrote in message
        news:uuUdlfXVHH A.4828@TK2MSFTN GP05.phx.gbl...
        >Your:
        >>
        > Dim Node As XmlNode = objDoc.SelectSi ngleNode("/channel/status")
        >>
        >is the issue. The SelectSingleNod e method is relative to your current
        >scope (or position in the XmlDocument).
        >>
        >Your XPath expression is saying, get me the first status child element of
        >the first channel child element from where I am current at.
        >>
        >You are executing it from the objDoc object which does not have any
        >channel child elements. It has a single child element called
        >channelSnapsho t.
        >>
        >You can use this syntax:
        >>
        > Dim Node As XmlNode =
        >objDoc.Documen tElement.Select SingleNode("/channel/status")
        >>
        >which uses the same XPath expession but 'moves' the starting point to the
        >channelSnapsho t element, or you can use this syntax:
        >>
        > Dim Node As XmlNode = objDoc.SelectSi ngleNode("//channel/status")
        >>
        >where the // indicates 'any descendant' element.
        >>
        >To get the value you then need to use:
        >>
        > Dim status As String = Node.InnerText
        >>
        >Like wise the next bit would be:
        >>
        >>
        > Node = objDoc.SelectSi ngleNode("//channel/game")
        >>
        > Dim id As String = Node.Attibbutes ("id").Value
        >>
        >>
        >"Mark Cooney" <mark@mcooney.c o.ukwrote in message
        >news:eDhiHBXVH HA.3568@TK2MSFT NGP06.phx.gbl.. .
        >>OK this might be long winded by want to show you everything I am doing.
        >>>
        >>Down below is the result I get from an API Call to a website called
        >>Betfair.
        >>>
        >>The following is some code I am trying, but I have also tried many
        >>different
        >>variations.
        >>Dim response As HttpWebResponse = request.GetResp onse()
        >>>
        >>'Get the response stream
        >>Dim reader As StreamReader = New
        >>StreamReader( response.GetRes ponseStream)
        >>>
        >>Dim objDoc As New System.Xml.XmlD ocument
        >>objDoc.Load(r eader)
        >>>
        >>Dim Node As XmlNode = objDoc.SelectSi ngleNode("/channel/status")
        >>MsgBox(Node.V alue)
        >>>
        >>I am trying to the word "RUNNING" from within line 3 of the call but
        >>instead
        >>I am getting NullReferenceEx ception.
        >>I want to keep my code as simple as possible and I will want to pull
        >>other
        >>information such as the id attribute from line 4 of the call.
        >>>
        >>Can anyone help?
        >>MC
        >>>
        >>>
        >>API Call Returns the following:
        >><channelSnaps hot>
        >> <channel gameType="POKER " id="1444074" name="Exchange Poker
        >>Texas
        >>Hold'em">
        >> <status>RUNNING </status>
        >> <game id="1817283">
        >> <round>3</round>
        >> <bettingWindowT ime>45</bettingWindowTi me>
        >>>
        >><bettingWindo wPercentageComp lete>24</bettingWindowPe rcentageComplet e>
        >> <gameData>
        >> <object name="Hand 1">
        >> <description>On e Pair, Fours, Ace High,
        >>with Q, 8 Kickers</description>
        >> <status>IN_PLAY </status>
        >> <property name="Card 1" value="20"/>
        >> <property name="Card 2" value="29"/>
        >> </object>
        >> <object name="Hand 2">
        >> <description>On e Pair, Sixes, Ace
        >>High</description>
        >> <status>IN_PLAY </status>
        >> <property name="Card 1" value="5"/>
        >> <property name="Card 2" value="44"/>
        >> </object>
        >> <object name="Hand 3">
        >> <description>On e Pair, Fours, Ace High,
        >>with Q, 6 Kickers</description>
        >> <status>IN_PLAY </status>
        >> <property name="Card 1" value="31"/>
        >> <property name="Card 2" value="42"/>
        >> </object>
        >> <object name="Hand 4">
        >> <description>Ac e High</description>
        >> <status>IN_PLAY </status>
        >> <property name="Card 1" value="49"/>
        >> <property name="Card 2" value="45"/>
        >> </object>
        >> <object name="Community Cards">
        >> <description/>
        >> <status>N/A</status>
        >> <property name="Card 1" value="3"/>
        >> <property name="Card 2" value="13"/>
        >> <property name="Card 3" value="11"/>
        >> <property name="Card 4" value="NOT
        >>AVAILABLE"/>
        >> <property name="Card 5" value="NOT
        >>AVAILABLE"/>
        >> </object>
        >> </gameData>
        >> <markets currency="GBP">
        >> <market id="5615051">
        >> <status>ACTIV E</status>
        >> <commissionRate >2.5</commissionRate>
        >> <marketType>WIN _ONLY</marketType>
        >> <selections type="MainBets" >
        >> <selection id="658439">
        >> <name>Hand 1</name>
        >> <resource
        >>href="https ://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8439"
        >>responseType= "selectionTrade Activity" title="Trade Activity"/>
        >> <status>IN_PLAY </status>
        >>>
        >><amountMatche d>22.74</amountMatched>
        >> <bestAvailableT oBackPrices>
        >> <price
        >>amountUnmatch ed="204.42">6.6 </price>
        >> <price
        >>amountUnmatch ed="381.64">6.5 5</price>
        >> <price
        >>amountUnmatch ed="576.92">6.5 </price>
        >> </bestAvailableTo BackPrices>
        >> <bestAvailableT oLayPrices>
        >> <price
        >>amountUnmatch ed="74.6">6.7</price>
        >> <price
        >>amountUnmatch ed="504.74">6.7 5</price>
        >> <price
        >>amountUnmatch ed="551.44">6.8 </price>
        >> </bestAvailableTo LayPrices>
        >> </selection>
        >> <selection id="658440">
        >> <name>Hand 2</name>
        >> <resource
        >>href="https ://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8440"
        >>responseType= "selectionTrade Activity" title="Trade Activity"/>
        >> <status>IN_PLAY </status>
        >>>
        >><amountMatche d>88.68</amountMatched>
        >> <bestAvailableT oBackPrices>
        >> <price
        >>amountUnmatch ed="306.66">1.7 2</price>
        >> <price
        >>amountUnmatch ed="4127.36">1. 71</price>
        >> <price
        >>amountUnmatch ed="59.63">1.7 </price>
        >> </bestAvailableTo BackPrices>
        >> <bestAvailableT oLayPrices>
        >> <price
        >>amountUnmatch ed="99.98">1.73 </price>
        >> <price
        >>amountUnmatch ed="2188.96">1. 74</price>
        >> <price
        >>amountUnmatch ed="2200.77">1. 75</price>
        >> </bestAvailableTo LayPrices>
        >> </selection>
        >> <selection id="658441">
        >> <name>Hand 3</name>
        >> <resource
        >>href="https ://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8441"
        >>responseType= "selectionTrade Activity" title="Trade Activity"/>
        >> <status>IN_PLAY </status>
        >>>
        >><amountMatche d>102.9</amountMatched>
        >> <bestAvailableT oBackPrices>
        >> <price
        >>amountUnmatch ed="17.99">45.0 </price>
        >> <price
        >>amountUnmatch ed="140.4">44.5 </price>
        >> <price
        >>amountUnmatch ed="2.19">44.0 </price>
        >> </bestAvailableTo BackPrices>
        >> <bestAvailableT oLayPrices>
        >> <price
        >>amountUnmatch ed="33.52">46.0 </price>
        >> <price
        >>amountUnmatch ed="53.76">46.5 </price>
        >> <price
        >>amountUnmatch ed="79.76">47.0 </price>
        >> </bestAvailableTo LayPrices>
        >> </selection>
        >> <selection id="658442">
        >> <name>Hand 4</name>
        >> <resource
        >>href="https ://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8442"
        >>responseType= "selectionTrade Activity" title="Trade Activity"/>
        >> <status>IN_PLAY </status>
        >>>
        >><amountMatche d>1020.0</amountMatched>
        >> <bestAvailableT oBackPrices>
        >> <price
        >>amountUnmatch ed="158.07">4.0 </price>
        >> <price
        >>amountUnmatch ed="198.19">3.9 8</price>
        >> <price
        >>amountUnmatch ed="631.28">3.9 6</price>
        >> </bestAvailableTo BackPrices>
        >> <bestAvailableT oLayPrices>
        >> <price
        >>amountUnmatch ed="103.84">4.0 6</price>
        >> <price
        >>amountUnmatch ed="612.72">4.0 8</price>
        >> <price
        >>amountUnmatch ed="914.6">4.1 </price>
        >> </bestAvailableTo LayPrices>
        >> </selection>
        >> </selections>
        >> </market>
        >> </markets>
        >> </game>
        >> </channel>
        >> </channelSnapshot >
        >>>
        >>>
        >>>
        >>
        >
        >

        Comment

        • Mark Cooney

          #5
          Re: XML Help

          While i've tried many variations of what you said but I am still getting the
          error.

          I am now trying XMLReader.

          I have got it reading but going through the XML and looking up "status" and
          it is returning the contents of the each of the status elements within the
          documents.

          Next step, just give it what i need!!


          "Stephany Young" <noone@localhos twrote in message
          news:OM$nFMaVHH A.4964@TK2MSFTN GP06.phx.gbl...
          >I gave you the code!!!!
          >
          Why did you change:
          >
          Dim Node As XmlNode = objDoc.SelectSi ngleNode("//channel/status")
          >
          to
          >
          Dim Node As XmlNode =
          objDoc.Document Element.SelectS ingleNode("//channelSnapshot/channel/status")
          >
          Notice the difference!!!!! !
          >
          >
          "Mark Cooney" <mark@mcooney.c o.ukwrote in message
          news:%23QDp$9ZV HHA.1212@TK2MSF TNGP03.phx.gbl. ..
          >Stephany
          >>
          >Thanks for your help, I have made the changes and tried variations but
          >unfortunatel y I am still getting same.
          >>
          >This is the code I have now:
          >>
          >Dim response As HttpWebResponse = request.GetResp onse()
          >>
          >'Get the response stream
          >>
          >Dim reader As StreamReader = New StreamReader(re sponse.GetRespo nseStream)
          >>
          >Dim objDoc As New System.Xml.XmlD ocument
          >>
          >objDoc.Load(re ader)
          >>
          >Dim Node As XmlNode =
          >objDoc.Documen tElement.Select SingleNode("//channelSnapshot/channel/status")
          >>
          >MsgBox(Node.In nerText)
          >>
          >Do you have a sample piece of code I could look at?
          >>
          >Regards
          >>
          >"Stephany Young" <noone@localhos twrote in message
          >news:uuUdlfXVH HA.4828@TK2MSFT NGP05.phx.gbl.. .
          >>Your:
          >>>
          >> Dim Node As XmlNode = objDoc.SelectSi ngleNode("/channel/status")
          >>>
          >>is the issue. The SelectSingleNod e method is relative to your current
          >>scope (or position in the XmlDocument).
          >>>
          >>Your XPath expression is saying, get me the first status child element
          >>of the first channel child element from where I am current at.
          >>>
          >>You are executing it from the objDoc object which does not have any
          >>channel child elements. It has a single child element called
          >>channelSnapsh ot.
          >>>
          >>You can use this syntax:
          >>>
          >> Dim Node As XmlNode =
          >>objDoc.Docume ntElement.Selec tSingleNode("/channel/status")
          >>>
          >>which uses the same XPath expession but 'moves' the starting point to
          >>the channelSnapshot element, or you can use this syntax:
          >>>
          >> Dim Node As XmlNode = objDoc.SelectSi ngleNode("//channel/status")
          >>>
          >>where the // indicates 'any descendant' element.
          >>>
          >>To get the value you then need to use:
          >>>
          >> Dim status As String = Node.InnerText
          >>>
          >>Like wise the next bit would be:
          >>>
          >>>
          >> Node = objDoc.SelectSi ngleNode("//channel/game")
          >>>
          >> Dim id As String = Node.Attibbutes ("id").Value
          >>>
          >>>
          >>"Mark Cooney" <mark@mcooney.c o.ukwrote in message
          >>news:eDhiHBXV HHA.3568@TK2MSF TNGP06.phx.gbl. ..
          >>>OK this might be long winded by want to show you everything I am doing.
          >>>>
          >>>Down below is the result I get from an API Call to a website called
          >>>Betfair.
          >>>>
          >>>The following is some code I am trying, but I have also tried many
          >>>different
          >>>variations .
          >>>Dim response As HttpWebResponse = request.GetResp onse()
          >>>>
          >>>'Get the response stream
          >>>Dim reader As StreamReader = New
          >>>StreamReader (response.GetRe sponseStream)
          >>>>
          >>>Dim objDoc As New System.Xml.XmlD ocument
          >>>objDoc.Load( reader)
          >>>>
          >>>Dim Node As XmlNode = objDoc.SelectSi ngleNode("/channel/status")
          >>>MsgBox(Node. Value)
          >>>>
          >>>I am trying to the word "RUNNING" from within line 3 of the call but
          >>>instead
          >>>I am getting NullReferenceEx ception.
          >>>I want to keep my code as simple as possible and I will want to pull
          >>>other
          >>>informatio n such as the id attribute from line 4 of the call.
          >>>>
          >>>Can anyone help?
          >>>MC
          >>>>
          >>>>
          >>>API Call Returns the following:
          >>><channelSnap shot>
          >>> <channel gameType="POKER " id="1444074" name="Exchange Poker
          >>>Texas
          >>>Hold'em">
          >>> <status>RUNNING </status>
          >>> <game id="1817283">
          >>> <round>3</round>
          >>> <bettingWindowT ime>45</bettingWindowTi me>
          >>>>
          >>><bettingWind owPercentageCom plete>24</bettingWindowPe rcentageComplet e>
          >>> <gameData>
          >>> <object name="Hand 1">
          >>> <description>On e Pair, Fours, Ace High,
          >>>with Q, 8 Kickers</description>
          >>> <status>IN_PLAY </status>
          >>> <property name="Card 1" value="20"/>
          >>> <property name="Card 2" value="29"/>
          >>> </object>
          >>> <object name="Hand 2">
          >>> <description>On e Pair, Sixes, Ace
          >>>High</description>
          >>> <status>IN_PLAY </status>
          >>> <property name="Card 1" value="5"/>
          >>> <property name="Card 2" value="44"/>
          >>> </object>
          >>> <object name="Hand 3">
          >>> <description>On e Pair, Fours, Ace High,
          >>>with Q, 6 Kickers</description>
          >>> <status>IN_PLAY </status>
          >>> <property name="Card 1" value="31"/>
          >>> <property name="Card 2" value="42"/>
          >>> </object>
          >>> <object name="Hand 4">
          >>> <description>Ac e High</description>
          >>> <status>IN_PLAY </status>
          >>> <property name="Card 1" value="49"/>
          >>> <property name="Card 2" value="45"/>
          >>> </object>
          >>> <object name="Community Cards">
          >>> <description/>
          >>> <status>N/A</status>
          >>> <property name="Card 1" value="3"/>
          >>> <property name="Card 2" value="13"/>
          >>> <property name="Card 3" value="11"/>
          >>> <property name="Card 4" value="NOT
          >>>AVAILABLE"/>
          >>> <property name="Card 5" value="NOT
          >>>AVAILABLE"/>
          >>> </object>
          >>> </gameData>
          >>> <markets currency="GBP">
          >>> <market id="5615051">
          >>> <status>ACTIV E</status>
          >>> <commissionRate >2.5</commissionRate>
          >>> <marketType>WIN _ONLY</marketType>
          >>> <selections type="MainBets" >
          >>> <selection id="658439">
          >>> <name>Hand 1</name>
          >>> <resource
          >>>href="http s://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8439"
          >>>responseType ="selectionTrad eActivity" title="Trade Activity"/>
          >>> <status>IN_PLAY </status>
          >>>>
          >>><amountMatch ed>22.74</amountMatched>
          >>> <bestAvailableT oBackPrices>
          >>> <price
          >>>amountUnmatc hed="204.42">6. 6</price>
          >>> <price
          >>>amountUnmatc hed="381.64">6. 55</price>
          >>> <price
          >>>amountUnmatc hed="576.92">6. 5</price>
          >>>>
          >>></bestAvailableTo BackPrices>
          >>> <bestAvailableT oLayPrices>
          >>> <price
          >>>amountUnmatc hed="74.6">6.7</price>
          >>> <price
          >>>amountUnmatc hed="504.74">6. 75</price>
          >>> <price
          >>>amountUnmatc hed="551.44">6. 8</price>
          >>> </bestAvailableTo LayPrices>
          >>> </selection>
          >>> <selection id="658440">
          >>> <name>Hand 2</name>
          >>> <resource
          >>>href="http s://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8440"
          >>>responseType ="selectionTrad eActivity" title="Trade Activity"/>
          >>> <status>IN_PLAY </status>
          >>>>
          >>><amountMatch ed>88.68</amountMatched>
          >>> <bestAvailableT oBackPrices>
          >>> <price
          >>>amountUnmatc hed="306.66">1. 72</price>
          >>> <price
          >>>amountUnmatc hed="4127.36">1 .71</price>
          >>> <price
          >>>amountUnmatc hed="59.63">1.7 </price>
          >>>>
          >>></bestAvailableTo BackPrices>
          >>> <bestAvailableT oLayPrices>
          >>> <price
          >>>amountUnmatc hed="99.98">1.7 3</price>
          >>> <price
          >>>amountUnmatc hed="2188.96">1 .74</price>
          >>> <price
          >>>amountUnmatc hed="2200.77">1 .75</price>
          >>> </bestAvailableTo LayPrices>
          >>> </selection>
          >>> <selection id="658441">
          >>> <name>Hand 3</name>
          >>> <resource
          >>>href="http s://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8441"
          >>>responseType ="selectionTrad eActivity" title="Trade Activity"/>
          >>> <status>IN_PLAY </status>
          >>>>
          >>><amountMatch ed>102.9</amountMatched>
          >>> <bestAvailableT oBackPrices>
          >>> <price
          >>>amountUnmatc hed="17.99">45. 0</price>
          >>> <price
          >>>amountUnmatc hed="140.4">44. 5</price>
          >>> <price
          >>>amountUnmatc hed="2.19">44.0 </price>
          >>>>
          >>></bestAvailableTo BackPrices>
          >>> <bestAvailableT oLayPrices>
          >>> <price
          >>>amountUnmatc hed="33.52">46. 0</price>
          >>> <price
          >>>amountUnmatc hed="53.76">46. 5</price>
          >>> <price
          >>>amountUnmatc hed="79.76">47. 0</price>
          >>> </bestAvailableTo LayPrices>
          >>> </selection>
          >>> <selection id="658442">
          >>> <name>Hand 4</name>
          >>> <resource
          >>>href="http s://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8442"
          >>>responseType ="selectionTrad eActivity" title="Trade Activity"/>
          >>> <status>IN_PLAY </status>
          >>>>
          >>><amountMatch ed>1020.0</amountMatched>
          >>> <bestAvailableT oBackPrices>
          >>> <price
          >>>amountUnmatc hed="158.07">4. 0</price>
          >>> <price
          >>>amountUnmatc hed="198.19">3. 98</price>
          >>> <price
          >>>amountUnmatc hed="631.28">3. 96</price>
          >>>>
          >>></bestAvailableTo BackPrices>
          >>> <bestAvailableT oLayPrices>
          >>> <price
          >>>amountUnmatc hed="103.84">4. 06</price>
          >>> <price
          >>>amountUnmatc hed="612.72">4. 08</price>
          >>> <price
          >>>amountUnmatc hed="914.6">4.1 </price>
          >>> </bestAvailableTo LayPrices>
          >>> </selection>
          >>> </selections>
          >>> </market>
          >>> </markets>
          >>> </game>
          >>> </channel>
          >>> </channelSnapshot >
          >>>>
          >>>>
          >>>>
          >>>
          >>
          >>
          >

          Comment

          Working...