我正在尝试编写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&gt; 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
答案 0 :(得分: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)
显然,更复杂的文档可能需要比简单"/body/div"
更复杂的xpath,但它仍然非常简单。
如果您需要获取与路径匹配的多个元素的列表,可以使用doc.SelectNodes
。