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 null geçirirseniz özniteliğini kaldırın. |
XElement.SetElementValue | değerini null geç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 Child1
kaldırıldı ve tüm torun öğeleri öğesinden Child2
ve öğesinden Child3
kaldırıldı.