Vb.net 当html div具有某些属性时,如何对其进行反序列化?

Vb.net 当html div具有某些属性时,如何对其进行反序列化?,vb.net,serialization,deserialization,Vb.net,Serialization,Deserialization,例如: <div class="link_text"> <a href="http://www.stackoverflow.com"> <strong>Text</strong></a> </div> 使用普通标记(如XML标记)很容易,只需创建与标记同名的类,因此如果标记为: <something></something> 您创建了一个名为something的类,但在示例div(如该

例如:

<div class="link_text">
 <a href="http://www.stackoverflow.com">
 <strong>Text</strong></a>
</div>

使用普通标记(如XML标记)很容易,只需创建与标记同名的类,因此如果标记为:

<something></something>


您创建了一个名为something的类,但在示例div(如该示例div)中如何在HTML中创建该类,并在其中包含class属性?

您需要将
xmldattribute
属性应用于类中的属性,以指示您希望将属性作为属性而不是元素处理。例如:

Public Class div
    <XmlAttribute()> _
    Public Property [class] As String
        Get
            Return _class
        End Get
        Set(value As String)
            _class = value
        End Set
    End Property
    Private _class As String

    Public Property a As a
        Get
            Return _a
        End Get
        Set(value As a)
            _a = value
        End Set
    End Property
    Private _a As a

    Public Property strong As String
        Get
            Return _strong
        End Get
        Set(value As String)
            _strong = value
        End Set
    End Property
    Private _strong As String
End Class

Public Class a
    <XmlAttribute()> _
    Public Property href As String
        Get
            Return _href
        End Get
        Set(value As String)
            _href = value
        End Set
    End Property
    Private _href As String
End Class
在任何情况下,一旦将其反序列化为
div
对象,您可以这样读取它:

Dim myDiv As div = '...
Dim theClassOfMyDiv As String = myDiv.class
Dim theHref As String = myDiv.a.href
' etc.

多加特先生又罢工了!顺便说一句,我把问题名称搞砸了,应该是反序列化,而不是修复。因此,我要寻找的是如何将该div的元素转换为我可以读取的数据,正如我前面的问题:)我正在开发一个可以显示天气预报的网络应用程序,所以我一直在尝试从互联网上收集数据来做这件事。我添加了一个更完整的例子来说明我的意思。然而,我认为你更大的困惑可能是因为你走错了方向。如果您的目标是解析HTML,我不建议使用XML反序列化。首先,很多HTML都不能满足格式良好的XML文档的要求。然而,即使它可以反序列化,也不意味着这很容易。试图构建数据结构来模拟HTML文档似乎是一种过于复杂的方法,尤其是如果您只对文档中的一小部分元素感兴趣。对于解析HTML,我强烈建议您查看HtmlAgility pack,它是一个第三方库(我相信是免费的、开源的)。这样,您就可以将文档加载到标准DOM对象中,然后轻松地遍历文档树或使用XPATH从中查询数据。它的工作原理非常类似于
XmlDocument
类。感谢大家的指导,Steven,我一定会尽快研究它,它有两个来源,一个是地下天气,我可以使用它的API请求我已经反序列化的XML文件,另一个来源是天气频道,他们确实在他们的站点上提供了我需要的数据类型的一个小峰值,但在他们的API上没有这样做,因此我试图尝试反序列化html的一部分,但我想你在这方面比我有更多的知识。如果我有更多的麻烦,我可能会告诉你反序列化是用于读取XML的非常有用的方法。这很好,因为在简单的情况下,它可以使代码更易于阅读和维护。但是,对于大型复杂文档,很难最终使代码不那么直观。听起来解析Html的复杂性已经达到了序列化弊大于利的程度。一旦你看到XPath是多么简单和直观,你甚至可以考虑使用HTML和XML。
Dim myDiv As div = '...
Dim theClassOfMyDiv As String = myDiv.class
Dim theHref As String = myDiv.a.href
' etc.