Linq To XML - 无法删除节点

时间:2011-09-05 18:25:22

标签: vb.net linq-to-xml

我有以下列表

<Inventory>
  <Car ID="1000">
    <PetName>Jimbo</PetName>
    <Color>Red</Color>
    <Make>Ford</Make>
  </Car>
  <Car ID="1001">
    <PetName>Jimbo</PetName>
    <Color>Red</Color>
    <Make>Ford</Make>
  </Car>
</Inventory>

我正在尝试删除ID = 1000的Car节点,但我无法正确使用

以下是我的代码,请注意调试器永远不会发送e.Remove

    Dim doc As XDocument = XDocument.Load("Test.xml")

    Dim e As XElement = From element
                        In doc.Elements("Inventory").Elements("Car")
                        Where element.Attribute("ID").Value = "1000"
                        Select element
    e.Remove()

1 个答案:

答案 0 :(得分:0)

您的LINQ查询返回IEnumerable<XElement>,而不是XElement。试试这个:

Dim e = From element
        In doc.Root.Elements("Car")
        Where element.Attribute("ID").Value = "1000"
        Select element

e.Remove()

如果这不起作用,请确保您已启用Option Infer以使用隐式类型变量或将初始化更改为Dim e As IEnumerable(Of XEelement) = ...为显式。

由于您使用的是XDocument,因此您可以使用Root属性,而不是查找Inventory节点,即doc.Root...而不是doc.Elements("Inventory")...