1

我正在尝试编写一个 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>")

我只得到“正文>我的示例”字符串,而不是“要提取的文本”

谁能帮我?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
4

1 回答 1

2

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)

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

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

于 2012-05-17T15:41:33.660 回答