使用 VB.NET 和 LINQ 从网站上抓取 XML
Scraping XML from a website with VB.NET and LINQ
我已经通读了 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
我已经通读了 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