Connecting Tech Pros Worldwide Forums | Help | Site Map

XML Help

Mark Cooney
Guest
 
Posts: n/a
#1: Feb 21 '07
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.GetResponse()

'Get the response stream
Dim reader As StreamReader = New StreamReader(response.GetResponseStream)

Dim objDoc As New System.Xml.XmlDocument
objDoc.Load(reader)

Dim Node As XmlNode = objDoc.SelectSingleNode("/channel/status")
MsgBox(Node.Value)

I am trying to the word "RUNNING" from within line 3 of the call but instead
I am getting NullReferenceException.
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:
<channelSnapshot>
<channel gameType="POKER" id="1444074" name="Exchange Poker Texas
Hold'em">
<status>RUNNING</status>
<game id="1817283">
<round>3</round>
<bettingWindowTime>45</bettingWindowTime>
<bettingWindowPercentageComplete>24</bettingWindowPercentageComplete>
<gameData>
<object name="Hand 1">
<description>One 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>One 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>One 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>Ace 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>ACTIVE</status>
<commissionRate>2.5</commissionRate>
<marketType>WIN_ONLY</marketType>
<selections type="MainBets">
<selection id="658439">
<name>Hand 1</name>
<resource
href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658439"
responseType="selectionTradeActivity" title="Trade Activity"/>
<status>IN_PLAY</status>
<amountMatched>22.74</amountMatched>
<bestAvailableToBackPrices>
<price
amountUnmatched="204.42">6.6</price>
<price
amountUnmatched="381.64">6.55</price>
<price
amountUnmatched="576.92">6.5</price>
</bestAvailableToBackPrices>
<bestAvailableToLayPrices>
<price
amountUnmatched="74.6">6.7</price>
<price
amountUnmatched="504.74">6.75</price>
<price
amountUnmatched="551.44">6.8</price>
</bestAvailableToLayPrices>
</selection>
<selection id="658440">
<name>Hand 2</name>
<resource
href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658440"
responseType="selectionTradeActivity" title="Trade Activity"/>
<status>IN_PLAY</status>
<amountMatched>88.68</amountMatched>
<bestAvailableToBackPrices>
<price
amountUnmatched="306.66">1.72</price>
<price
amountUnmatched="4127.36">1.71</price>
<price
amountUnmatched="59.63">1.7</price>
</bestAvailableToBackPrices>
<bestAvailableToLayPrices>
<price
amountUnmatched="99.98">1.73</price>
<price
amountUnmatched="2188.96">1.74</price>
<price
amountUnmatched="2200.77">1.75</price>
</bestAvailableToLayPrices>
</selection>
<selection id="658441">
<name>Hand 3</name>
<resource
href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658441"
responseType="selectionTradeActivity" title="Trade Activity"/>
<status>IN_PLAY</status>
<amountMatched>102.9</amountMatched>
<bestAvailableToBackPrices>
<price
amountUnmatched="17.99">45.0</price>
<price
amountUnmatched="140.4">44.5</price>
<price
amountUnmatched="2.19">44.0</price>
</bestAvailableToBackPrices>
<bestAvailableToLayPrices>
<price
amountUnmatched="33.52">46.0</price>
<price
amountUnmatched="53.76">46.5</price>
<price
amountUnmatched="79.76">47.0</price>
</bestAvailableToLayPrices>
</selection>
<selection id="658442">
<name>Hand 4</name>
<resource
href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658442"
responseType="selectionTradeActivity" title="Trade Activity"/>
<status>IN_PLAY</status>
<amountMatched>1020.0</amountMatched>
<bestAvailableToBackPrices>
<price
amountUnmatched="158.07">4.0</price>
<price
amountUnmatched="198.19">3.98</price>
<price
amountUnmatched="631.28">3.96</price>
</bestAvailableToBackPrices>
<bestAvailableToLayPrices>
<price
amountUnmatched="103.84">4.06</price>
<price
amountUnmatched="612.72">4.08</price>
<price
amountUnmatched="914.6">4.1</price>
</bestAvailableToLayPrices>
</selection>
</selections>
</market>
</markets>
</game>
</channel>
</channelSnapshot>




Stephany Young
Guest
 
Posts: n/a
#2: Feb 21 '07

re: XML Help


Your:

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

is the issue. The SelectSingleNode 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.DocumentElement.SelectSingleNode("/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.SelectSingleNode("//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.SelectSingleNode("//channel/game")

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


"Mark Cooney" <mark@mcooney.co.ukwrote in message
news:eDhiHBXVHHA.3568@TK2MSFTNGP06.phx.gbl...
Quote:
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.GetResponse()
>
'Get the response stream
Dim reader As StreamReader = New StreamReader(response.GetResponseStream)
>
Dim objDoc As New System.Xml.XmlDocument
objDoc.Load(reader)
>
Dim Node As XmlNode = objDoc.SelectSingleNode("/channel/status")
MsgBox(Node.Value)
>
I am trying to the word "RUNNING" from within line 3 of the call but
instead
I am getting NullReferenceException.
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:
<channelSnapshot>
<channel gameType="POKER" id="1444074" name="Exchange Poker Texas
Hold'em">
<status>RUNNING</status>
<game id="1817283">
<round>3</round>
<bettingWindowTime>45</bettingWindowTime>
>
<bettingWindowPercentageComplete>24</bettingWindowPercentageComplete>
<gameData>
<object name="Hand 1">
<description>One 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>One 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>One 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>Ace 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>ACTIVE</status>
<commissionRate>2.5</commissionRate>
<marketType>WIN_ONLY</marketType>
<selections type="MainBets">
<selection id="658439">
<name>Hand 1</name>
<resource
href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658439"
responseType="selectionTradeActivity" title="Trade Activity"/>
<status>IN_PLAY</status>
>
<amountMatched>22.74</amountMatched>
<bestAvailableToBackPrices>
<price
amountUnmatched="204.42">6.6</price>
<price
amountUnmatched="381.64">6.55</price>
<price
amountUnmatched="576.92">6.5</price>
</bestAvailableToBackPrices>
<bestAvailableToLayPrices>
<price
amountUnmatched="74.6">6.7</price>
<price
amountUnmatched="504.74">6.75</price>
<price
amountUnmatched="551.44">6.8</price>
</bestAvailableToLayPrices>
</selection>
<selection id="658440">
<name>Hand 2</name>
<resource
href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658440"
responseType="selectionTradeActivity" title="Trade Activity"/>
<status>IN_PLAY</status>
>
<amountMatched>88.68</amountMatched>
<bestAvailableToBackPrices>
<price
amountUnmatched="306.66">1.72</price>
<price
amountUnmatched="4127.36">1.71</price>
<price
amountUnmatched="59.63">1.7</price>
</bestAvailableToBackPrices>
<bestAvailableToLayPrices>
<price
amountUnmatched="99.98">1.73</price>
<price
amountUnmatched="2188.96">1.74</price>
<price
amountUnmatched="2200.77">1.75</price>
</bestAvailableToLayPrices>
</selection>
<selection id="658441">
<name>Hand 3</name>
<resource
href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658441"
responseType="selectionTradeActivity" title="Trade Activity"/>
<status>IN_PLAY</status>
>
<amountMatched>102.9</amountMatched>
<bestAvailableToBackPrices>
<price
amountUnmatched="17.99">45.0</price>
<price
amountUnmatched="140.4">44.5</price>
<price
amountUnmatched="2.19">44.0</price>
</bestAvailableToBackPrices>
<bestAvailableToLayPrices>
<price
amountUnmatched="33.52">46.0</price>
<price
amountUnmatched="53.76">46.5</price>
<price
amountUnmatched="79.76">47.0</price>
</bestAvailableToLayPrices>
</selection>
<selection id="658442">
<name>Hand 4</name>
<resource
href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658442"
responseType="selectionTradeActivity" title="Trade Activity"/>
<status>IN_PLAY</status>
>
<amountMatched>1020.0</amountMatched>
<bestAvailableToBackPrices>
<price
amountUnmatched="158.07">4.0</price>
<price
amountUnmatched="198.19">3.98</price>
<price
amountUnmatched="631.28">3.96</price>
</bestAvailableToBackPrices>
<bestAvailableToLayPrices>
<price
amountUnmatched="103.84">4.06</price>
<price
amountUnmatched="612.72">4.08</price>
<price
amountUnmatched="914.6">4.1</price>
</bestAvailableToLayPrices>
</selection>
</selections>
</market>
</markets>
</game>
</channel>
</channelSnapshot>
>
>
>
Mark Cooney
Guest
 
Posts: n/a
#3: Feb 21 '07

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.GetResponse()

'Get the response stream

Dim reader As StreamReader = New StreamReader(response.GetResponseStream)

Dim objDoc As New System.Xml.XmlDocument

objDoc.Load(reader)

Dim Node As XmlNode =
objDoc.DocumentElement.SelectSingleNode("//channelSnapshot/channel/status")

MsgBox(Node.InnerText)

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

Regards

"Stephany Young" <noone@localhostwrote in message
news:uuUdlfXVHHA.4828@TK2MSFTNGP05.phx.gbl...
Quote:
Your:
>
Dim Node As XmlNode = objDoc.SelectSingleNode("/channel/status")
>
is the issue. The SelectSingleNode 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.DocumentElement.SelectSingleNode("/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.SelectSingleNode("//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.SelectSingleNode("//channel/game")
>
Dim id As String = Node.Attibbutes("id").Value
>
>
"Mark Cooney" <mark@mcooney.co.ukwrote in message
news:eDhiHBXVHHA.3568@TK2MSFTNGP06.phx.gbl...
Quote:
>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.GetResponse()
>>
>'Get the response stream
>Dim reader As StreamReader = New StreamReader(response.GetResponseStream)
>>
>Dim objDoc As New System.Xml.XmlDocument
>objDoc.Load(reader)
>>
>Dim Node As XmlNode = objDoc.SelectSingleNode("/channel/status")
>MsgBox(Node.Value)
>>
>I am trying to the word "RUNNING" from within line 3 of the call but
>instead
>I am getting NullReferenceException.
>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:
><channelSnapshot>
> <channel gameType="POKER" id="1444074" name="Exchange Poker Texas
>Hold'em">
> <status>RUNNING</status>
> <game id="1817283">
> <round>3</round>
> <bettingWindowTime>45</bettingWindowTime>
>>
><bettingWindowPercentageComplete>24</bettingWindowPercentageComplete>
> <gameData>
> <object name="Hand 1">
> <description>One 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>One 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>One 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>Ace 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>ACTIVE</status>
> <commissionRate>2.5</commissionRate>
> <marketType>WIN_ONLY</marketType>
> <selections type="MainBets">
> <selection id="658439">
> <name>Hand 1</name>
> <resource
>href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658439"
>responseType="selectionTradeActivity" title="Trade Activity"/>
> <status>IN_PLAY</status>
>>
><amountMatched>22.74</amountMatched>
> <bestAvailableToBackPrices>
> <price
>amountUnmatched="204.42">6.6</price>
> <price
>amountUnmatched="381.64">6.55</price>
> <price
>amountUnmatched="576.92">6.5</price>
> </bestAvailableToBackPrices>
> <bestAvailableToLayPrices>
> <price
>amountUnmatched="74.6">6.7</price>
> <price
>amountUnmatched="504.74">6.75</price>
> <price
>amountUnmatched="551.44">6.8</price>
> </bestAvailableToLayPrices>
> </selection>
> <selection id="658440">
> <name>Hand 2</name>
> <resource
>href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658440"
>responseType="selectionTradeActivity" title="Trade Activity"/>
> <status>IN_PLAY</status>
>>
><amountMatched>88.68</amountMatched>
> <bestAvailableToBackPrices>
> <price
>amountUnmatched="306.66">1.72</price>
> <price
>amountUnmatched="4127.36">1.71</price>
> <price
>amountUnmatched="59.63">1.7</price>
> </bestAvailableToBackPrices>
> <bestAvailableToLayPrices>
> <price
>amountUnmatched="99.98">1.73</price>
> <price
>amountUnmatched="2188.96">1.74</price>
> <price
>amountUnmatched="2200.77">1.75</price>
> </bestAvailableToLayPrices>
> </selection>
> <selection id="658441">
> <name>Hand 3</name>
> <resource
>href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658441"
>responseType="selectionTradeActivity" title="Trade Activity"/>
> <status>IN_PLAY</status>
>>
><amountMatched>102.9</amountMatched>
> <bestAvailableToBackPrices>
> <price
>amountUnmatched="17.99">45.0</price>
> <price
>amountUnmatched="140.4">44.5</price>
> <price
>amountUnmatched="2.19">44.0</price>
> </bestAvailableToBackPrices>
> <bestAvailableToLayPrices>
> <price
>amountUnmatched="33.52">46.0</price>
> <price
>amountUnmatched="53.76">46.5</price>
> <price
>amountUnmatched="79.76">47.0</price>
> </bestAvailableToLayPrices>
> </selection>
> <selection id="658442">
> <name>Hand 4</name>
> <resource
>href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658442"
>responseType="selectionTradeActivity" title="Trade Activity"/>
> <status>IN_PLAY</status>
>>
><amountMatched>1020.0</amountMatched>
> <bestAvailableToBackPrices>
> <price
>amountUnmatched="158.07">4.0</price>
> <price
>amountUnmatched="198.19">3.98</price>
> <price
>amountUnmatched="631.28">3.96</price>
> </bestAvailableToBackPrices>
> <bestAvailableToLayPrices>
> <price
>amountUnmatched="103.84">4.06</price>
> <price
>amountUnmatched="612.72">4.08</price>
> <price
>amountUnmatched="914.6">4.1</price>
> </bestAvailableToLayPrices>
> </selection>
> </selections>
> </market>
> </markets>
> </game>
> </channel>
> </channelSnapshot>
>>
>>
>>
>

Stephany Young
Guest
 
Posts: n/a
#4: Feb 21 '07

re: XML Help


I gave you the code!!!!

Why did you change:

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

to

Dim Node As XmlNode =
objDoc.DocumentElement.SelectSingleNode("//channelSnapshot/channel/status")

Notice the difference!!!!!!


"Mark Cooney" <mark@mcooney.co.ukwrote in message
news:%23QDp$9ZVHHA.1212@TK2MSFTNGP03.phx.gbl...
Quote:
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.GetResponse()
>
'Get the response stream
>
Dim reader As StreamReader = New StreamReader(response.GetResponseStream)
>
Dim objDoc As New System.Xml.XmlDocument
>
objDoc.Load(reader)
>
Dim Node As XmlNode =
objDoc.DocumentElement.SelectSingleNode("//channelSnapshot/channel/status")
>
MsgBox(Node.InnerText)
>
Do you have a sample piece of code I could look at?
>
Regards
>
"Stephany Young" <noone@localhostwrote in message
news:uuUdlfXVHHA.4828@TK2MSFTNGP05.phx.gbl...
Quote:
>Your:
>>
> Dim Node As XmlNode = objDoc.SelectSingleNode("/channel/status")
>>
>is the issue. The SelectSingleNode 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.DocumentElement.SelectSingleNode("/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.SelectSingleNode("//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.SelectSingleNode("//channel/game")
>>
> Dim id As String = Node.Attibbutes("id").Value
>>
>>
>"Mark Cooney" <mark@mcooney.co.ukwrote in message
>news:eDhiHBXVHHA.3568@TK2MSFTNGP06.phx.gbl...
Quote:
>>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.GetResponse()
>>>
>>'Get the response stream
>>Dim reader As StreamReader = New
>>StreamReader(response.GetResponseStream)
>>>
>>Dim objDoc As New System.Xml.XmlDocument
>>objDoc.Load(reader)
>>>
>>Dim Node As XmlNode = objDoc.SelectSingleNode("/channel/status")
>>MsgBox(Node.Value)
>>>
>>I am trying to the word "RUNNING" from within line 3 of the call but
>>instead
>>I am getting NullReferenceException.
>>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:
>><channelSnapshot>
>> <channel gameType="POKER" id="1444074" name="Exchange Poker
>>Texas
>>Hold'em">
>> <status>RUNNING</status>
>> <game id="1817283">
>> <round>3</round>
>> <bettingWindowTime>45</bettingWindowTime>
>>>
>><bettingWindowPercentageComplete>24</bettingWindowPercentageComplete>
>> <gameData>
>> <object name="Hand 1">
>> <description>One 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>One 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>One 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>Ace 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>ACTIVE</status>
>> <commissionRate>2.5</commissionRate>
>> <marketType>WIN_ONLY</marketType>
>> <selections type="MainBets">
>> <selection id="658439">
>> <name>Hand 1</name>
>> <resource
>>href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658439"
>>responseType="selectionTradeActivity" title="Trade Activity"/>
>> <status>IN_PLAY</status>
>>>
>><amountMatched>22.74</amountMatched>
>> <bestAvailableToBackPrices>
>> <price
>>amountUnmatched="204.42">6.6</price>
>> <price
>>amountUnmatched="381.64">6.55</price>
>> <price
>>amountUnmatched="576.92">6.5</price>
>> </bestAvailableToBackPrices>
>> <bestAvailableToLayPrices>
>> <price
>>amountUnmatched="74.6">6.7</price>
>> <price
>>amountUnmatched="504.74">6.75</price>
>> <price
>>amountUnmatched="551.44">6.8</price>
>> </bestAvailableToLayPrices>
>> </selection>
>> <selection id="658440">
>> <name>Hand 2</name>
>> <resource
>>href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658440"
>>responseType="selectionTradeActivity" title="Trade Activity"/>
>> <status>IN_PLAY</status>
>>>
>><amountMatched>88.68</amountMatched>
>> <bestAvailableToBackPrices>
>> <price
>>amountUnmatched="306.66">1.72</price>
>> <price
>>amountUnmatched="4127.36">1.71</price>
>> <price
>>amountUnmatched="59.63">1.7</price>
>> </bestAvailableToBackPrices>
>> <bestAvailableToLayPrices>
>> <price
>>amountUnmatched="99.98">1.73</price>
>> <price
>>amountUnmatched="2188.96">1.74</price>
>> <price
>>amountUnmatched="2200.77">1.75</price>
>> </bestAvailableToLayPrices>
>> </selection>
>> <selection id="658441">
>> <name>Hand 3</name>
>> <resource
>>href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658441"
>>responseType="selectionTradeActivity" title="Trade Activity"/>
>> <status>IN_PLAY</status>
>>>
>><amountMatched>102.9</amountMatched>
>> <bestAvailableToBackPrices>
>> <price
>>amountUnmatched="17.99">45.0</price>
>> <price
>>amountUnmatched="140.4">44.5</price>
>> <price
>>amountUnmatched="2.19">44.0</price>
>> </bestAvailableToBackPrices>
>> <bestAvailableToLayPrices>
>> <price
>>amountUnmatched="33.52">46.0</price>
>> <price
>>amountUnmatched="53.76">46.5</price>
>> <price
>>amountUnmatched="79.76">47.0</price>
>> </bestAvailableToLayPrices>
>> </selection>
>> <selection id="658442">
>> <name>Hand 4</name>
>> <resource
>>href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658442"
>>responseType="selectionTradeActivity" title="Trade Activity"/>
>> <status>IN_PLAY</status>
>>>
>><amountMatched>1020.0</amountMatched>
>> <bestAvailableToBackPrices>
>> <price
>>amountUnmatched="158.07">4.0</price>
>> <price
>>amountUnmatched="198.19">3.98</price>
>> <price
>>amountUnmatched="631.28">3.96</price>
>> </bestAvailableToBackPrices>
>> <bestAvailableToLayPrices>
>> <price
>>amountUnmatched="103.84">4.06</price>
>> <price
>>amountUnmatched="612.72">4.08</price>
>> <price
>>amountUnmatched="914.6">4.1</price>
>> </bestAvailableToLayPrices>
>> </selection>
>> </selections>
>> </market>
>> </markets>
>> </game>
>> </channel>
>> </channelSnapshot>
>>>
>>>
>>>
>>
>
>
Mark Cooney
Guest
 
Posts: n/a
#5: Feb 21 '07

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@localhostwrote in message
news:OM$nFMaVHHA.4964@TK2MSFTNGP06.phx.gbl...
Quote:
>I gave you the code!!!!
>
Why did you change:
>
Dim Node As XmlNode = objDoc.SelectSingleNode("//channel/status")
>
to
>
Dim Node As XmlNode =
objDoc.DocumentElement.SelectSingleNode("//channelSnapshot/channel/status")
>
Notice the difference!!!!!!
>
>
"Mark Cooney" <mark@mcooney.co.ukwrote in message
news:%23QDp$9ZVHHA.1212@TK2MSFTNGP03.phx.gbl...
Quote:
>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.GetResponse()
>>
>'Get the response stream
>>
>Dim reader As StreamReader = New StreamReader(response.GetResponseStream)
>>
>Dim objDoc As New System.Xml.XmlDocument
>>
>objDoc.Load(reader)
>>
>Dim Node As XmlNode =
>objDoc.DocumentElement.SelectSingleNode("//channelSnapshot/channel/status")
>>
>MsgBox(Node.InnerText)
>>
>Do you have a sample piece of code I could look at?
>>
>Regards
>>
>"Stephany Young" <noone@localhostwrote in message
>news:uuUdlfXVHHA.4828@TK2MSFTNGP05.phx.gbl...
Quote:
>>Your:
>>>
>> Dim Node As XmlNode = objDoc.SelectSingleNode("/channel/status")
>>>
>>is the issue. The SelectSingleNode 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.DocumentElement.SelectSingleNode("/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.SelectSingleNode("//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.SelectSingleNode("//channel/game")
>>>
>> Dim id As String = Node.Attibbutes("id").Value
>>>
>>>
>>"Mark Cooney" <mark@mcooney.co.ukwrote in message
>>news:eDhiHBXVHHA.3568@TK2MSFTNGP06.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.GetResponse()
>>>>
>>>'Get the response stream
>>>Dim reader As StreamReader = New
>>>StreamReader(response.GetResponseStream)
>>>>
>>>Dim objDoc As New System.Xml.XmlDocument
>>>objDoc.Load(reader)
>>>>
>>>Dim Node As XmlNode = objDoc.SelectSingleNode("/channel/status")
>>>MsgBox(Node.Value)
>>>>
>>>I am trying to the word "RUNNING" from within line 3 of the call but
>>>instead
>>>I am getting NullReferenceException.
>>>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:
>>><channelSnapshot>
>>> <channel gameType="POKER" id="1444074" name="Exchange Poker
>>>Texas
>>>Hold'em">
>>> <status>RUNNING</status>
>>> <game id="1817283">
>>> <round>3</round>
>>> <bettingWindowTime>45</bettingWindowTime>
>>>>
>>><bettingWindowPercentageComplete>24</bettingWindowPercentageComplete>
>>> <gameData>
>>> <object name="Hand 1">
>>> <description>One 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>One 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>One 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>Ace 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>ACTIVE</status>
>>> <commissionRate>2.5</commissionRate>
>>> <marketType>WIN_ONLY</marketType>
>>> <selections type="MainBets">
>>> <selection id="658439">
>>> <name>Hand 1</name>
>>> <resource
>>>href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658439"
>>>responseType="selectionTradeActivity" title="Trade Activity"/>
>>> <status>IN_PLAY</status>
>>>>
>>><amountMatched>22.74</amountMatched>
>>> <bestAvailableToBackPrices>
>>> <price
>>>amountUnmatched="204.42">6.6</price>
>>> <price
>>>amountUnmatched="381.64">6.55</price>
>>> <price
>>>amountUnmatched="576.92">6.5</price>
>>>>
>>></bestAvailableToBackPrices>
>>> <bestAvailableToLayPrices>
>>> <price
>>>amountUnmatched="74.6">6.7</price>
>>> <price
>>>amountUnmatched="504.74">6.75</price>
>>> <price
>>>amountUnmatched="551.44">6.8</price>
>>> </bestAvailableToLayPrices>
>>> </selection>
>>> <selection id="658440">
>>> <name>Hand 2</name>
>>> <resource
>>>href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658440"
>>>responseType="selectionTradeActivity" title="Trade Activity"/>
>>> <status>IN_PLAY</status>
>>>>
>>><amountMatched>88.68</amountMatched>
>>> <bestAvailableToBackPrices>
>>> <price
>>>amountUnmatched="306.66">1.72</price>
>>> <price
>>>amountUnmatched="4127.36">1.71</price>
>>> <price
>>>amountUnmatched="59.63">1.7</price>
>>>>
>>></bestAvailableToBackPrices>
>>> <bestAvailableToLayPrices>
>>> <price
>>>amountUnmatched="99.98">1.73</price>
>>> <price
>>>amountUnmatched="2188.96">1.74</price>
>>> <price
>>>amountUnmatched="2200.77">1.75</price>
>>> </bestAvailableToLayPrices>
>>> </selection>
>>> <selection id="658441">
>>> <name>Hand 3</name>
>>> <resource
>>>href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658441"
>>>responseType="selectionTradeActivity" title="Trade Activity"/>
>>> <status>IN_PLAY</status>
>>>>
>>><amountMatched>102.9</amountMatched>
>>> <bestAvailableToBackPrices>
>>> <price
>>>amountUnmatched="17.99">45.0</price>
>>> <price
>>>amountUnmatched="140.4">44.5</price>
>>> <price
>>>amountUnmatched="2.19">44.0</price>
>>>>
>>></bestAvailableToBackPrices>
>>> <bestAvailableToLayPrices>
>>> <price
>>>amountUnmatched="33.52">46.0</price>
>>> <price
>>>amountUnmatched="53.76">46.5</price>
>>> <price
>>>amountUnmatched="79.76">47.0</price>
>>> </bestAvailableToLayPrices>
>>> </selection>
>>> <selection id="658442">
>>> <name>Hand 4</name>
>>> <resource
>>>href="https://api.games.betfair.com/rest/v1/selection/tradeActivity?marketId=5615051&selectionId=658442"
>>>responseType="selectionTradeActivity" title="Trade Activity"/>
>>> <status>IN_PLAY</status>
>>>>
>>><amountMatched>1020.0</amountMatched>
>>> <bestAvailableToBackPrices>
>>> <price
>>>amountUnmatched="158.07">4.0</price>
>>> <price
>>>amountUnmatched="198.19">3.98</price>
>>> <price
>>>amountUnmatched="631.28">3.96</price>
>>>>
>>></bestAvailableToBackPrices>
>>> <bestAvailableToLayPrices>
>>> <price
>>>amountUnmatched="103.84">4.06</price>
>>> <price
>>>amountUnmatched="612.72">4.08</price>
>>> <price
>>>amountUnmatched="914.6">4.1</price>
>>> </bestAvailableToLayPrices>
>>> </selection>
>>> </selections>
>>> </market>
>>> </markets>
>>> </game>
>>> </channel>
>>> </channelSnapshot>
>>>>
>>>>
>>>>
>>>
>>
>>
>

Closed Thread


Similar Visual Basic .NET bytes