How to search and update a xml file

  • Thread starter Thread starter Ibai Peña
  • Start date Start date
I

Ibai Peña

Hi,

here is the xml schema that I have.
<item>
<subitem1>Value1</subitem1>
<subitem2></subitem2>
</item>
<item>
<subitem1>Value2</subitem1>
<subitem2></subitem2>
</item>
....

I need to search a xml file, looking for a pattern (subitem="Value1"). When
found the subitem, update subitem2 with another value.

How can this be done?
Thanks in advance,
 
Here is a routine I wrote to solve part of this problem. You could modify it
to return the actual node if you want to update it:



' This function replicates the SelectSingleNode MSXML function only
to the extent required by

' expressions such as /starting/next/next/element or
/starting/next/next/element/@attribute

Public Function SelectSingleNode(ByVal xmldoc As XmlDocument, ByVal
sInput As String) As String

Dim sSelect() As String, sXML As String, i As Integer, xNode As
XmlNode, tNode As XmlNode

' Break down the input string

sSelect = Split(sInput, "/")

If UBound(sSelect) < 1 Then Return ""

' Get the first node

xNode = xmldoc.GetElementsByTagName(sSelect(1)).Item(0)

' go to the next-to-last element

For i = 2 To UBound(sSelect) - 1

If xNode.HasChildNodes Then

For Each tNode In xNode.ChildNodes

If tNode.Name = sSelect(i) Then

xNode = tNode

Exit For

End If

Next

Else

Return ""

End If

Next

' Handle last node or attribute

If Mid(sSelect(i), 1, 1) = "@" Then

If xNode.Attributes(Mid(sSelect(i), 2)) Is Nothing Then

Return ""

Else

Return xNode.Attributes(Mid(sSelect(i), 2)).InnerText

End If

Else

For Each tNode In xNode.ChildNodes

If tNode.Name = sSelect(i) Then

xNode = tNode

Exit For

End If

Next

If xNode Is Nothing Then Return ""

Return xNode.InnerText

End If



End Function
 
Back
Top