Я лично предпочитаю использовать класс XDocument, который был реализован в .Net 3.5.
Учитывая, что:
Я кодировал что-то вроде этого чтобы удалить только строку, которую я выбираю с помощью строки «deleteme», которая может быть вашим «TextBox1.Text».
Как я уже писал, он будет удалять все, содержащие данную строку. Если вы уверены, что у вас есть только одна запись с данной строкой, вы можете ввести команду «Выход для», как вы это делали в своем примере.
Dim tst_xml_path = "MyPath"
Dim deleteme As String = ("0145191647505")
Dim doc As New XDocument()
doc = XDocument.Load(tst_xml_path & "tst.xml")
For Each elem In doc.<sales_audit_xml>.<DataTable>
If elem.<TicketNumber>.Value = deleteme Then
MsgBox("Element " & elem.<TicketNumber>.Value & " deleted!")
elem.<TicketNumber>.Remove()
End If
Next
Console.WriteLine(doc.ToString)
doc.Save(tst_xml_path & "tst.xml")
Итак, я попробовал ваш полный код со следующими правками:
Public Sub Button5_Click() 'Removed the params to call the function easily.
Dim deleteme As String = ("01451947504") 'Debug Var for string comapre
Dim doc As New XmlDocument()
doc.Load(path & FileXml)
Dim Nodes = doc.SelectNodes("//TicketNumber")
For Each elem As XmlElement In Nodes
If elem.InnerText = deleteme Then
elem.ParentNode.ParentNode.RemoveChild(elem.ParentNode)
MsgBox("Element Deleted! ", MsgBoxStyle.Critical) '& TicketNumber.ToString) 'Edited the MessageBox
End If
Next
doc.Save(path & "ouput.xml") 'Edited the ouput file for debug purpose
End Sub
Я просто называю его в своей основной функции следующим образом ...
Dim Tst = New Form1
Tst.Button5_Click()
И все прошло нормально. Я могу удалить все 3 таблицы данных, которые вы написали в своем примере XML-файла ...
У Гуппи есть хороший профилировщик памяти (Heapy):
>>> from guppy import hpy
>>> hp = hpy()
>>> hp.setrelheap() # ignore all existing objects
>>> d = {}
>>> d['key'] = [ (1131, 3.11e18), (9813, 2.48e19), (4991, 9.11e18) ]
>>> hp.heap()
Partition of a set of 24 objects. Total size = 1464 bytes.
Index Count % Size % Cumulative % Kind (class / dict of class)
0 2 8 676 46 676 46 types.FrameType
1 6 25 220 15 896 61 str
2 6 25 184 13 1080 74 tuple
...
Heapy немного недокументирован, поэтому вам, возможно, придется немного покопаться в веб-странице или исходном коде, но он очень мощный. Есть также несколько статей , которые могут быть уместны.
Вы можете сделать это с помощью профилировщика памяти, о котором я знаю пару:
Возможно, это дубликат этого вопроса.