There are numerous articles about this topic. I for one struggled for a while with this. My solution uses the same web services however when you build your xml you use Update for the Cmd instead of New. Another thing you have to grab is the record ID of the list item you want to update. You'll need a key to link the two list and then you'll have to loop through your repeating data (if it's repeating) to assign the key to a hidden field, then you grab it on submit. Here is one such block of code I am using. Hope it helps.
Sub PublishToOrderTable()
Dim i As Integer
Dim iRows As Integer = thisXDocument.DOM.selectNodes("//my:myFields/my:OrderDetail").length
Dim orders As New WS_BGB.Lists
Dim cr As New System.Net.NetworkCredential("username", "password", "domain")
orders.Credentials = cr
Dim doc As New XmlDocument
Dim updates As XmlElement = doc.CreateElement("Batch")
'********************************************
'Non repeating data pushsed to data table
Dim OrderSource As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderSource").text
Dim OrderNumber As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderNumber").text
Dim DateofOrder As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:DateofOrder").text
Dim DateFulfilled As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:DateFulfilled").text
'Dim TotalCost As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:TotalCost").text
Dim FormName As String = thisXDocument.DOM.selectSingleNode("/my:myFields/my:FormName").text
Dim CustomerName As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:Customer/my:CustomerName").text
Dim CustomerRecordId As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:Customer/my:CustomerRecordId").text
Dim CustomerNumber As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:Customer/my:CustomerNumber").text
Dim OrderFormNumber As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderFormNumber").text
'Dim SortStatus As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:SortStatus").text
'********************************************
For i = 1 To iRows
'******************************************
'Repeating data
Dim boxNum As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:BoxNumber").text
Dim product As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:ProductOrderD").text
Dim ARSTrackingNum As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:ARSTrackingNumber").text
Dim postalTrackingNumber As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:PostalTrackingNumberD").text
Dim fulfilled As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:Fulfilled").text
'Dim Cost As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:CostPerUnitD").text
'Dim CostAdjustment As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:CostAdjustmentD").text
Dim ShipMethod As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:MethodofShippingD").text
Dim OrderDetailId As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:OrderDetailID").text
Dim receivedDate As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:ReceivedDate").text
Dim sortingDate As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:SortDetail[1]/my:SortingDate").text
'Dim sortingDate As String = ""
Dim grossWeight As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:GrossWeight").text
'Dim batteryChemistry As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:BatteryChemistry").text
Dim batteryChemistry As String = ""
'Dim sortedBy As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:SortedBy").text
Dim sortedBy As String = ""
Dim boxActive As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:BoxActive").text
'Dim TrackingContainer As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:TrackingContainer").text
Dim TrackingContainer As String = ""
Dim BoxReturnNumber As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:OrderDetail[" & i & "]/my:BoxReturnNumber").text
Dim ReturnFacility As String = thisXDocument.DOM.selectSingleNode("//my:myFields/my:ReturnFacility").text
'******************************************
'******************************************
'Build XML document to pass to the web service. First determine if it's a new submission or an update
'
'
'******************************************
If OrderDetailId = "" Then
updates.InnerXml = "<Method ID='1' Cmd='New'><Field Name='OrderSource'>" + OrderSource + "</Field><Field Name='OrderNumber'>" + OrderNumber + _
"</Field><Field Name='DateofOrder'>" + DateofOrder + "</Field><Field Name='DateFulfilled'>" + DateFulfilled + _
"</Field><Field Name='CustomerNumber'>" + CustomerNumber + _
"</Field><Field Name='ProductOrdered'>" + product + _
"</Field><Field Name='ShippingMethod'>" + ShipMethod + _
"</Field><Field Name='PostalTrackingNumber'>" + postalTrackingNumber + "</Field><Field Name='BoxNumber'>" + boxNum + _
"</Field><Field Name='ARSTrackingNumber'>" + ARSTrackingNum + "</Field><Field Name='Fulfilled'>" + fulfilled + _
"</Field><Field Name='ReceivedDate'>" + receivedDate + "</Field><Field Name='SortedDate'>" + sortingDate + "</Field><Field Name='BatteryChemistry'>" + batteryChemistry + _
"</Field><Field Name='GrossWeight'>" + grossWeight + "</Field><Field Name='SortedBy'>" + sortedBy + "</Field><Field Name='Cancelled'>" + boxActive + "</Field>" + _
"<Field Name='FormName'>" + FormName + "</Field><Field Name='CustomerName'>" + CustomerName + "</Field><Field Name='CustomerRecordId'>" + CustomerRecordId + "</Field>" + _
"<Field Name='OrderFormNumber'>" + OrderFormNumber + "</Field><Field Name='TrackingContainer'>" + TrackingContainer + "</Field>" + _
"<Field Name='ReturnShippingNumber'>" + BoxReturnNumber + "</Field><Field Name='ReturnFacility'>" + ReturnFacility + "</Field></Method>"
ElseIf OrderDetailId <> "" Then
updates.InnerXml = "<Method ID='1' Cmd='Update'><Field Name='OrderSource'>" + OrderSource + "</Field><Field Name='OrderNumber'>" + OrderNumber + _
"</Field><Field Name='DateofOrder'>" + DateofOrder + "</Field><Field Name='DateFulfilled'>" + DateFulfilled + _
"</Field><Field Name='CustomerNumber'>" + CustomerNumber + _
"</Field><Field Name='ProductOrdered'>" + product + _
"</Field><Field Name='ShippingMethod'>" + ShipMethod + _
"</Field><Field Name='PostalTrackingNumber'>" + postalTrackingNumber + "</Field><Field Name='BoxNumber'>" + boxNum + _
"</Field><Field Name='ARSTrackingNumber'>" + ARSTrackingNum + "</Field><Field Name='Fulfilled'>" + fulfilled + _
"</Field><Field Name='ReceivedDate'>" + receivedDate + "</Field><Field Name='SortedDate'>" + sortingDate + "</Field><Field Name='BatteryChemistry'>" + batteryChemistry + _
"</Field><Field Name='GrossWeight'>" + grossWeight + "</Field><Field Name='SortedBy'>" + sortedBy + "</Field><Field Name='ID'>" + OrderDetailId + _
"</Field><Field Name='Cancelled'>" + boxActive + "</Field><Field Name='FormName'>" + FormName + "</Field><Field Name='CustomerName'>" + CustomerName + "</Field>" + _
"<Field Name='CustomerRecordId'>" + CustomerRecordId + "</Field><Field Name='OrderFormNumber'>" + OrderFormNumber + "</Field><Field Name='TrackingContainer'>" + TrackingContainer + _
"</Field><Field Name='ReturnShippingNumber'>" + BoxReturnNumber + "</Field><Field Name='ReturnFacility'>" + ReturnFacility + "</Field></Method>"
End If
orders.UpdateListItems("{0A82E0E5-A558-48A6-BA4C-46DE27D3B9FC}", updates)
Next
End Sub