XML ağacından öğeleri, öznitelikleri ve düğümleri kaldırma (LINQ to XML)

Öğeleri, öznitelikleri ve diğer düğüm türlerini kaldırarak XML ağacını değiştirebilirsiniz.

XML belgesinden tek bir öğeyi veya tek bir özniteliği kaldırmak kolaydır. Ancak, öğe veya öznitelik koleksiyonlarını kaldırırken, önce bir koleksiyonu bir listeye dönüştürmeniz ve ardından öğeleri veya öznitelikleri listeden silmeniz gerekir. En iyi yaklaşım, bunu yapmak için uzantı yöntemini kullanmaktır Remove .

Bu yaklaşımı kullanmanın temel nedeni, XML ağacından aldığınız koleksiyonların çoğunun ertelenmiş yürütme kullanılarak alınmasıdır. Bunları ilk olarak bir listede gerçekleştirmezseniz veya uzantı yöntemlerini kullanmıyorsanız, belirli bir hata sınıfıyla karşılaşabilirsiniz. Daha fazla bilgi için bkz . Karma bildirim temelli/kesinlik temelli kod hataları.

Aşağıdaki yöntemler bir XML ağacından düğümleri ve öznitelikleri kaldırır.

Metot Açıklama
XAttribute.Remove bir XAttribute öğesini üst öğesinden kaldırın.
XContainer.RemoveNodes alt düğümlerini öğesinden XContainerkaldırın.
XElement.RemoveAll bir 'den XElementiçerik ve öznitelikleri kaldırma.
XElement.RemoveAttributes bir öğesinin XElementözniteliklerini kaldırın.
XElement.SetAttributeValue değerini nullgeçirirseniz özniteliğini kaldırın.
XElement.SetElementValue değerini nullgeçirirseniz alt öğeyi kaldırın.
XNode.Remove bir XNode öğesini üst öğesinden kaldırın.
Extensions.Remove Kaynak koleksiyondaki her özniteliği veya öğeyi üst öğesinden kaldırın.

Örnek: Tek bir öğeyi kaldırma ve öğe koleksiyonunu iki yolla kaldırma

Bu örnekte öğeleri kaldırmaya yönelik üç yaklaşım gösterilmektedir. İlk olarak, tek bir öğeyi kaldırır. İkinci olarak, bir öğe koleksiyonunu alır, işlecini Enumerable.ToList kullanarak bunları gerçekleştirir ve sonra koleksiyonu kaldırır. Son olarak, bir öğe koleksiyonunu alır ve uzantı yöntemini kullanarak Remove bunları kaldırır.

işleci hakkında ToList daha fazla bilgi için bkz . Veri Türlerini Dönüştürme (C#) ve Veri Türlerini Dönüştürme (Visual Basic).

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)

Bu örnek aşağıdaki çıkışı oluşturur:

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

İlk torun öğesi öğesinden Child1kaldırıldı ve tüm torun öğeleri öğesinden Child2 ve öğesinden Child3kaldırıldı.