使用 VB.NET 和 LINQ 从网站抓取 XML



我一直在通读 LINQ 文档并查看一些关于 Stack Overflow 的先前答案,但我仍然对 LINQ 的工作原理感到非常困惑。我想从网站上获取一些数据,但我不知道如何让 xml 解析为字符串。这是我到目前为止所拥有的:

Public Class Form1
    'Dim xml As XDocument
    Dim ns As XNamespace
    Dim strXMLSource As String = "http://gd2.mlb.com/components/game/mlb/year_2018/month_03/day_29/gid_2018_03_29_anamlb_oakmlb_1/linescore.xml"
    Dim xml As XDocument = <?xml version="1.0" encoding="utf-16"?>
                           <game>
                               <id>
                               </id>
                               <venue>
                               </venue>
                           </game>

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        txtXMLSource.Text = strXMLSource
    End Sub
    Private Sub cmdGetData_Click(sender As System.Object, e As System.EventArgs) Handles cmdGetData.Click
        ns = txtXMLSource.Text
        Dim strGame As XElement = xml.Descendants(ns + "game").First
        Dim strId As String = strGame.Descendants(ns + "id").First
        MessageBox.Show(strId)
    End Sub
End Class

因此,当表单加载时,它会将XNamespace设置为ns,将XDocument设置为xml。当我单击表单上的cmdGetData按钮时,它应该将网站名称加载到XNamespace,然后获取第一个id元素的值并将其放入strId变量中。然后它应该在消息框中打印该值。我知道我做错了什么,但我不知道该怎么做才能解决它。

这是一个开始

Imports System.Xml
Imports System.Xml.Linq
Module Module1
    Const URL As String = "http://gd2.mlb.com/components/game/mlb/year_2018/month_03/day_29/gid_2018_03_29_anamlb_oakmlb_1/linescore.xml"
    Sub Main()
        Dim doc As XDocument = XDocument.Load(URL)
        Dim root As XElement = doc.Root
        Dim id As String = root.Attribute("id")
    End Sub
End Module

最新更新