请尝试下一个功能。它使用RegEx:
Function UpdateNode(strText As String, strTag As String, strReplace As String) As String
With CreateObject("VBScript.RegExp")
.MultiLine = True
.IgnoreCase = True
.Pattern = "<sub>(.*)</sub>"
.Pattern = "<" & strTag & ">(.*)</" & strTag & ">"
UpdateNode = .Replace(strText, "<" & strTag & ">" & strReplace & "</" & strTag & ">")
End With
End Function
使用下一个Sub 对其进行测试:
Sub testUpdateNode()
Dim txt As String
txt = "<Main> " & vbCrLf & _
" <sub>data</sub>" & vbCrLf & _
" <sub2>data2</sub2>" & vbCrLf & _
" <sub3>data3</sub3>" & vbCrLf & _
"</main>"
Debug.Print UpdateNode(txt, "sub", "New Data")
Debug.Print UpdateNode(txt, "sub2", "New Data")
End Sub
注意有一个正确的 XML (sub2, sub3 misint 结尾 /)...