【问题标题】:How to extract text content from tags in .NET?如何从 .NET 中的标签中提取文本内容?
【发布时间】:2012-05-17 15:12:39
【问题描述】:

我正在尝试编写一个 vb.net 函数来从标签中提取特定的文本内容;我写了这个函数

Public Function GetTagContent(ByRef instance_handler As String, ByRef start_tag As String, ByRef end_tag As String) As String
    Dim s As String = ""
    Dim content() As String = instance_handler.Split(start_tag)
    If content.Count > 1 Then
        Dim parts() As String = content(1).Split(end_tag)
        If parts.Count > 0 Then
            s = parts(0)
        End If
    End If
    Return s
End Function

但它不起作用,例如使用以下调试代码

    Dim testString As String = "<body>my example <div style=""margin-top:20px""> text to extract </div> <br /> another line.</body>"

    txtOutput.Text = testString.GetTagContent("<div style=""margin-top:20px"">", "</div>")

我只得到“body>my example”字符串,而不是“text to extract”

谁能帮助我?提前 tnx


我写了一个新例程,下面的代码可以工作,但是我会知道是否存在更好的性能代码:

    Dim s As New StringBuilder()
    Dim i As Integer = instance_handler.IndexOf(start_tag, 0)
    If i < 0 Then
        Return ""
    Else
        i = i + start_tag.Length
    End If
    Dim j As Integer = instance_handler.IndexOf(end_tag, i)
    If j < 0 Then
        s.Append(instance_handler.Substring(i))
    Else
        s.Append(instance_handler.Substring(i, j - i))
    End If
    Return s.ToString

【问题讨论】:

  • 我写了一个新例程,下面的代码可以工作,但是我会知道是否存在更好的性能代码: Dim s As New StringBuilder() Dim i As Integer = instance_handler.IndexOf(start_tag, 0) If i

标签: html vb.net string parsing split


【解决方案1】:

XPath 是完成此任务的一种方式。我相信其他人会建议使用 LINQ。这是一个使用 XPath 的示例:

Dim testString As String = "<body>my example <div style=""margin-top:20px""> text to extract </div> <br /> another line.</body>"
Dim doc As XmlDocument = New XmlDocument()
doc.LoadXml(testString)
MessageBox.Show(doc.SelectSingleNode("/body/div").InnerText)

显然,一个更复杂的文档可能需要一个比简单的 "/body/div" 更复杂的 xpath,但它仍然非常简单。

如果需要获取与路径匹配的多个元素的列表,可以使用doc.SelectNodes

【讨论】:

    猜你喜欢
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2017-08-08
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多