1

次の xml ストリームを読み込もうとしていますが、本当に苦労しています。

<channelSnapshot xmlns="urn:betfair:games:api:v1">
<channel gameType="BLACKJACK" id="1444077" name="Exchange BlackJack">
<status>RUNNING</status>
<game id="190675">
<round>1</round>
<bettingWindowTime>30</bettingWindowTime>
<bettingWindowPercentageComplete>100</bettingWindowPercentageComplete>
<gameData>
<object name="Player 1">
<description/>
<status>IN_PLAY</status>
<property name="Card 1" value="NOT AVAILABLE"/>
<property name="Card 2" value="NOT AVAILABLE"/>
</object>

ストリームは次の方法で取得されます

  Dim dataStream As Stream = response.GetResponseStream()
  Dim reader As New XmlTextReader(dataStream)

要素が開始タグと終了タグの間にある場合

 <status>RUNNING</status>

次に、値にアクセスできます。Select Case xmlnodetype を使用していますが、ノードタイプが空白の場合にこれを使用すると、空白を超える要素に到達できません。次の行で

 <property name="Card 1" value="NOT AVAILABLE"/>

プロパティという言葉を超えて何かに到達することはできません。

明らかなように、これは私にとってすべて新しいことなので、すべての助けを歓迎します。

4

4 に答える 4

0

それらを属性として読み取る必要があります。GetAttribute () メソッドを参照してください。

例えば:

Dim cardName as String = reader.GetAttribute("name")
于 2009-07-09T17:51:12.230 に答える
0

XmlReader を作成するときにXmlReaderSettingsを使用して、基になるストリームの解析を簡素化することを検討する必要があります (つまり、 XmlReaderSettings.IgnoreWhitespace )。

次に、次のような方法でストリームを解析できるはずです。

using (XmlReader reader = XmlReader.Create(dataStream))
{
    while(reader.Read())
    {
        switch(reader.NodeType)
        {
            case XmlNodeType.Element:
            // do something

            case XmlNodeType.Attribute:
            // do something

            // etc...
        }
    }
}

また、XmlReader基本クラスのプロパティメソッドを調べて、要素、属性、およびその他の XML エンティティを取得する方法を決定します。

于 2009-07-09T17:54:10.790 に答える
0

XML の形式が正しくありません。終了タグのない開始タグがあります。XML をインデントした場合は、それが表示されます。

また、.NET 1.1 の使用に行き詰まっている場合を除き、XmlTextReader を使用しないでください。XmlReader.Create を使用します。

XmlReader を直接使用することに加えて、XML を検索するためのやや単純なモデルを提供する LINQ to XML や、XmlReader から読み込むことができる古い XmlDocument を調べることもできます。

于 2009-07-09T17:57:23.963 に答える