Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取xml流_Xml_Vb.net_Streamreader - Fatal编程技术网

读取xml流

读取xml流,xml,vb.net,streamreader,Xml,Vb.net,Streamreader,我正试图阅读下面的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> <

我正试图阅读下面的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>
如果元素位于开始标记和结束标记之间,例如

 <status>RUNNING</status>
正在运行
然后我可以访问值ok。 我一直在使用Select Case xmlnodetype,但当nodetype是空白时使用它 我无法访问空格以外的元素。因此,在下面的行中

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

除了“财产”这个词外,我什么都做不到


显然,这对我来说是全新的,所以我欢迎所有人和任何人的帮助

您需要将它们作为属性读取。请参阅()方法

例如:

Dim cardName as String = reader.GetAttribute("name")

您需要将它们作为属性读取。请参阅()方法

例如:

Dim cardName as String = reader.GetAttribute("name")

在创建XMLRead时应考虑使用以简化对底层流(即)的解析。

然后,您应该能够以类似于以下的方式解析流

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

            case XmlNodeType.Attribute:
            // do something

            // etc...
        }
    }
}

还检查基类的类型,以确定如何获取元素、属性和其他XML实体。

< P>在创建XMLRead时,应考虑使用简化对底层流(即)的解析。 然后,您应该能够以类似于以下的方式解析流

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

            case XmlNodeType.Attribute:
            // do something

            // etc...
        }
    }
}

另外,检查基类的and以确定如何获取元素、属性和其他XML实体。

您的XML格式不正确。你有打开的标签,没有关闭的标签。如果您缩进了XML,就会看到这一点

此外,除非您一直在使用.NET1.1,否则不应该使用XmlTextReader。使用XmlReader.Create


除了直接使用XmlReader之外,您可能还想看看LINQ to XML,它为搜索XML提供了一个更简单的模型,或者是旧的XmlDocument,您可以从XmlReader加载它。

您的XML格式不好。你有打开的标签,没有关闭的标签。如果您缩进了XML,就会看到这一点

此外,除非您一直在使用.NET1.1,否则不应该使用XmlTextReader。使用XmlReader.Create


除了直接使用XmlReader之外,您可能还想看看LINQ to XML,它为搜索XML提供了一个稍微简单的模型,或者是旧的XmlDocument,您可以从XmlReader加载它。

另一种方法如何?像您当前所做的那样处理流似乎是一项相当艰巨的工作

如果您将整个流读入一个字符串,然后将该字符串加载到一个字符串中,您将能够更轻松地处理该文件

VB允许您以非常简单的方式访问Xml文件中的数据,请查看以下代码以了解我的意思:

”获取响应流,以便我们可以读取它
Dim responseStream=response.GetResponseStream()
'创建流读取器以读取响应
Dim responseReader=新IO.StreamReader(responseStream)
'读取响应文本(这应该是javascript)
Dim responseText=responseReader.ReadToEnd()
'将响应加载到XDocument中
Dim xmlDocument=XDocument.Parse(responseText)
'从文档中查找所有播放器对象
对于xmlDocument中的每个playerObject。。。
'显示玩家的姓名(这是访问属性的方式)
Console.WriteLine(“播放器名称:{0}”,播放器对象。@name)
'显示玩家的状态(这是访问元素的方式)
WriteLine(“播放器状态:{0}”,playerObject..Value)
下一个
要获取玩家属性,您可以执行以下操作:

查看玩家的属性 对于playerObject中的每个playerProperty。。。 '输出值 Console.WriteLine(“播放器属性名称:{0}”,播放器属性。@名称) WriteLine(“播放器属性值:{0}”,播放器属性。@value) 下一个
正如其他人提到的,您的Xml格式不正确,但是XDocument会告诉您这一点,以便您能够修复它。

另一种方法如何?像您当前所做的那样处理流似乎是一项相当艰巨的工作

如果您将整个流读入一个字符串,然后将该字符串加载到一个字符串中,您将能够更轻松地处理该文件

VB允许您以非常简单的方式访问Xml文件中的数据,请查看以下代码以了解我的意思:

”获取响应流,以便我们可以读取它
Dim responseStream=response.GetResponseStream()
'创建流读取器以读取响应
Dim responseReader=新IO.StreamReader(responseStream)
'读取响应文本(这应该是javascript)
Dim responseText=responseReader.ReadToEnd()
'将响应加载到XDocument中
Dim xmlDocument=XDocument.Parse(responseText)
'从文档中查找所有播放器对象
对于xmlDocument中的每个playerObject。。。
'显示玩家的姓名(这是访问属性的方式)
Console.WriteLine(“播放器名称:{0}”,播放器对象。@name)
'显示玩家的状态(这是访问元素的方式)
WriteLine(“播放器状态:{0}”,playerObject..Value)
下一个
要获取玩家属性,您可以执行以下操作:

查看玩家的属性 对于playerObject中的每个playerProperty。。。 '输出值 Console.WriteLine(“播放器属性名称:{0}”,播放器属性。@名称) WriteLine(“播放器属性值:{0}”,播放器属性。@value) 下一个
正如其他人提到的,您的Xml格式不正确,但是XDocument会告诉您这一点,以便您能够修复它。

嘿,感谢所有回复您的人!所有的答案都很有用,我从他们身上学到了一些东西。我不确定我是否仍然知道完成我的项目所需要知道的一切,但我肯定已经取得了进展;所以,再次感谢大家。嘿,感谢所有回应的人!所有的答案都很有用,我从他们身上学到了一些东西。我不确定我是否仍然知道完成我的项目所需要知道的一切,但我肯定已经取得了进展;再次感谢大家