在vb中解析xml

时间:2014-01-03 00:18:26

标签: xml vb.net

我有一个非常通用的xml文件,我正在寻求解析,但是,我不太确定在哪里可以找到从xml文件中读取数据的教程。我正在寻找创建纸牌游戏,我希望能够创建自己的纸牌。我已经创建了创建卡片的文件,但现在我必须阅读它们。

这是我的xml文件的格式:

<?xml version="1.0" encoding="utf-8"?>
<Cards>
<Card>
<ID>1</ID>
<Name>Cardsname</Name>
<Type>teetete</Type>
<Image>1gc.jpg</Image>
<Description>test</Description>
</Card>
</Cards>

如您所见,还有一个名为“Cards”的根节点,其中包含所有卡片。 我需要访问此节点并找到所有'Card'节点及其子节点(id,name,type,image)。我如何访问这些文本?

编辑: 刚想出如何访问它,但无法弄清楚如何循环它。如果我想访问多个元素,我该怎么做?

    Sub Main()
    Dim output As StringBuilder = New StringBuilder()
    Using reader As XmlReader = New XmlTextReader("C:\Godlycards\cards.xml")
        reader.ReadToFollowing("Card")
        reader.MoveToFirstAttribute()
        reader.ReadToFollowing("ID")
        output.AppendLine("ID: " + reader.ReadElementContentAsString())
        reader.ReadToFollowing("Name")
        output.AppendLine("Name: " + reader.ReadElementContentAsString())
        reader.ReadToFollowing("Type")
        output.AppendLine("Type: " + reader.ReadElementContentAsString())
        reader.ReadToFollowing("Image")
        output.AppendLine("Image: " + reader.ReadElementContentAsString())
        reader.ReadToFollowing("Description")
        output.AppendLine("Description: " + reader.ReadElementContentAsString())
        MessageBox.Show(output.ToString)
    End Using
End Sub

谢谢!

2 个答案:

答案 0 :(得分:2)

使用XMLReader

有关示例,请参阅此link

答案 1 :(得分:1)

XDocument / XElement是处理案例中方便事项的便捷方式。考虑这个例子:

Dim xml As XDocument = <?xml version="1.0" encoding="utf-8"?>
                       <Cards>
                         <Card>
                           <ID>1</ID>
                           <Name>Cardsname</Name>
                           <Type>teetete</Type>
                           <Image>1gc.jpg</Image>
                           <Description>test</Description>
                         </Card>
                       </Cards>

是的,您可以将原始xml粘贴到您的代码中。

然后可以使用以下方法访问您的卡片集合:

Dim cards As IEnumerable(Of XElement) = xml.Root.Elements("Card")

对于特定的卡片,您可以获得如下属性:

Dim cardID As String = cards(0).Element("ID").Value

作为旁注,您可能会使用XDocument.LoadXDocument.Parse,而不是将XML与您的代码内联。休息是一样的。