如果要刪除可以用一個簡單的模式匹配的節點的名稱屬性,下面應該工作:
Dim SchemaDoc As New XDocument(<Root><Group Name="Foo"/><Group Name="Node1"/>
<Group Name="Node2"/><Group name="Bar"/></Root>)
Dim NodesToRemove = From Element In SchemaDoc.<Root>.<Group> Where _
[email protected] Like "NotNode?"
For Each XNode In NodesToRemove.ToArray()
XNode.Remove()
Next
請注意使用的ToArray的()在NodesToRemove的枚舉中:在開始修改它所基於的集合之前,需要這個強制對XQuery進行評估。
如果這不起作用,這裏有一個使用LINQ的替代方案(因爲我原先認爲在LINQ查詢中插入'not'不起作用,但我被另一個答案直接設置 - 每次你學到一些新東西天......):
Dim NodesToRemove As New Collections.ObjectModel.Collection(Of XNode)
For Each Element In SchemaDoc.<Root>.<Group>
If Not BasicGroups.Contains([email protected]) Then
NodesToRemove.Add(Element)
End If
Next
性能應該與使用LINQ非常相似。
來源
2008-10-21 12:07:23
mdb
所以在我的情況下.....哪裏不BasicGroups.Contains(元素。@名稱)...哪些作品很好..謝謝。 – 2008-10-21 12:14:53
好,我不確定VB的語法:) – leppie 2008-10-21 12:43:58