使用VB.NET和LINQ从网站抓取XML [英] Scraping XML from a website with VB.NET and LINQ

查看:90
本文介绍了使用VB.NET和LINQ从网站抓取XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在阅读LINQ文档,并在Stack Overflow上查看过一些以前的答案,但是我仍然对LINQ的工作方式感到困惑.我想从网站上获取一些数据,但是我不知道如何获取xml解析为字符串.这是我到目前为止的内容:

I've been reading thorough the LINQ documentation and looking at some previous answers on Stack Overflow but I'm still pretty confused about how LINQ works. I want to grab some data from a website, but I can't figure out how to get the xml to parse into strings. Here is what I have so far:

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变量中.然后,它应该在消息框中打印该值.我知道我做错了什么,但我不知道该怎么做.

So when the form loads it sets up an XNamespace as ns and an XDocument as xml. When I click the cmdGetData button on the form, it should load the website name to the XNamespace and then grab the value of the first id element and put it in the strId variable. And then it should print that value in a message box. I know I'm doing something wrong but I have no idea what to do to fix it.

推荐答案

这是一个开始

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

这篇关于使用VB.NET和LINQ从网站抓取XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆