MSXML删除节点不按预期方式运行

我正试图从下面的XML中删除一个节点 – 下面的数据只是代表了实际的数据:

<StaffMembers> <Staff Name="Test1" Date="Date1"/> <Staff Name="Test2" Date="Date2"/> </StaffMembers> 

我的代码如下:

 Sub DeleteRecord(strName as string, strDate as string) 'Load Document Set xList = xDoc.SelectNodes("//StaffMembers/") for each xNode in xList If xNode.Attributes.Length > 0 And xNode.Attributes.getNamedItem("Date").NodeValue = strDate Then xnode.parentnode.removechild xnode exit for End if next xNode 'Save Document End Sub 

生成的XML – 如您所见,它不完整:

 <StaffMembers> <Staff Name="Test1" Date="Date1"/> <Staff Name="Tes 

select了正确的节点,但只是部分删除。 如果我在记事本中打开生成的XML,那么节点的一些文本仍然存在。 任何人都可以解释吗?

编辑:

我已经尝试删除每个属性单独删除元素之前。 这遭受同样的问题。

谢谢

您可以使用XPath来select具有匹配属性条件的节点。 例如 :

 ..... Set xList = xDoc.SelectNodes("//StaffMembers/Staff[@Date='Date2']") For Each xnode In xList xnode.ParentNode.RemoveChild xnode Next xnode ..... 

这是一个XPathselect器,它将select那些名为Test2 Test3节点:

 xDoc.SelectNodes("//Staff[@Name = ""Test2"" || @Name = ""Test3""]") 

对于下面的testingVBScript程序,我删除这些节点后得到以下输出:

 <StaffMembers> <Staff Name="Test1" Date="Date1"/> <Staff Name="Test4" Date="Date4"/> </StaffMembers> 

testing程序:

 Option Explicit DeleteRecord "Test2", "Test3" Sub DeleteRecord(name1, name2) Dim xDoc : Set xDoc = CreateObject("Msxml2.DOMDocument") xDoc.LoadXML GetXml() Dim xList : Set xList = xDoc.SelectNodes _ ("//Staff[@Name = """ & name1 & """ || @Name = """ & name2 & """]") Dim xNode For Each xNode in xList xNode.ParentNode.RemoveChild xNode Next WScript.Echo xDoc.Xml End Sub Function GetXml() Dim NL : NL = vbNewLine GetXmL = _ "<StaffMembers>" &NL& _ " <Staff Name='Test1' Date='Date1'/>" &NL& _ " <Staff Name='Test2' Date='Date2'/>" &NL& _ " <Staff Name='Test3' Date='Date3'/>" &NL& _ " <Staff Name='Test4' Date='Date4'/>" &NL& _ "</StaffMembers>" End Function 

感谢您的答复。 我已经设法缩小了networking连接速度慢的问题。 保存到本地文件夹时不会发生损坏。

谢谢