Delen via


Elementen, kenmerken en knooppunten verwijderen uit een XML-structuur (LINQ naar XML)

U kunt een XML-structuur wijzigen, elementen, kenmerken en andere typen knooppunten verwijderen.

Het verwijderen van één element of één kenmerk uit een XML-document is eenvoudig. Wanneer u echter verzamelingen elementen of kenmerken verwijdert, moet u eerst een verzameling in een lijst materialiseren en vervolgens de elementen of kenmerken uit de lijst verwijderen. De beste methode is om de Remove extensiemethode te gebruiken om dit te doen.

De belangrijkste reden om deze methode te gebruiken, is dat de meeste verzamelingen die u uit een XML-structuur ophaalt, worden geretourneerd met behulp van de uitgestelde uitvoering. Als u ze niet eerst in een lijst materialiseert of als u de extensiemethoden niet gebruikt, kan er een bepaalde klasse bugs optreden. Zie Gemengde declaratieve/imperatieve codefouten voor meer informatie.

Met de volgende methoden worden knooppunten en kenmerken uit een XML-structuur verwijderd.

Wijze Description
XAttribute.Remove Verwijder een XAttribute van het bovenliggende item.
XContainer.RemoveNodes Verwijder de onderliggende knooppunten uit een XContainer.
XElement.RemoveAll Inhoud en kenmerken verwijderen uit een XElement.
XElement.RemoveAttributes Verwijder de kenmerken van een XElement.
XElement.SetAttributeValue Verwijder het kenmerk als u de waarde nulldoorgeeft.
XElement.SetElementValue Verwijder het onderliggende element als u de waarde nulldoorgeeft.
XNode.Remove Verwijder een XNode van het bovenliggende item.
Extensions.Remove Verwijder elk kenmerk of element in de bronverzameling uit het bovenliggende element.

Voorbeeld: Eén element verwijderen en een verzameling elementen op twee manieren verwijderen

In dit voorbeeld ziet u drie benaderingen voor het verwijderen van elementen. Eerst wordt één element verwijderd. Ten tweede haalt het een verzameling elementen op, wordt deze gerealiseerd met behulp van de Enumerable.ToList operator en wordt vervolgens de verzameling verwijderd. Ten slotte wordt een verzameling elementen opgehaald en verwijderd met behulp van de Remove extensiemethode.

Zie Gegevenstypen converteren (C#) en Gegevenstypen converteren (Visual Basic) voor meer informatie over de ToList operator.

XElement root = XElement.Parse(@"<Root>
    <Child1>
        <GrandChild1/>
        <GrandChild2/>
        <GrandChild3/>
    </Child1>
    <Child2>
        <GrandChild4/>
        <GrandChild5/>
        <GrandChild6/>
    </Child2>
    <Child3>
        <GrandChild7/>
        <GrandChild8/>
        <GrandChild9/>
    </Child3>
</Root>");
root.Element("Child1").Element("GrandChild1").Remove();
root.Element("Child2").Elements().ToList().Remove();
root.Element("Child3").Elements().Remove();
Console.WriteLine(root);
Dim root As XElement = _
    <Root>
        <Child1>
            <GrandChild1/>
            <GrandChild2/>
            <GrandChild3/>
        </Child1>
        <Child2>
            <GrandChild4/>
            <GrandChild5/>
            <GrandChild6/>
        </Child2>
        <Child3>
            <GrandChild7/>
            <GrandChild8/>
            <GrandChild9/>
        </Child3>
    </Root>
root.<Child1>.<GrandChild1>.Remove()
root.<Child2>.Elements().ToList().Remove()
root.<Child3>.Elements().Remove()
Console.WriteLine(root)

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

<Root>
  <Child1>
    <GrandChild2 />
    <GrandChild3 />
  </Child1>
  <Child2 />
  <Child3 />
</Root>

Het eerste kleinkindelement is verwijderd uit Child1, en alle kleinkinderen elementen zijn verwijderd uit Child2 en uit Child3.