Bir XDocument var ve bir düğüm kaldırmak ve bir düğümden sonra aynı düğümü tekrar eklemek zorundayım (xelement düğümüm karmaşık ve iç düğümler var) iyi). Yeni manipüle edilmiş düğümümün xmldocument sonuna eklendiğinden, bunu yapmak için iyi bir yolu var. Herhangi bir kod parçacığı büyük takdir edilecektir.Linq to XML - bir düğümü kaldır ve aynı yerde yeni bir düğüm ekle
cevap
sadece düğümü düzenlerken, o zaman neden hiç kaldırmak? Sadece ağaçta bir referans alın ve onu yerinde düzenleyin.
o nedense bir seçenek değil, o bu konuda gitmek için tek yön şudur: Eğer XElement
(veya genel olarak XNode
) ağaca değiştirmeniz gerekiyor, yeni XElement
oluşturmak bulduktan sonra Bir yedek olarak hizmet etmek ve sonra eski öğede XNode.ReplaceWith
yöntemini kullanarak argüman olarak yeni birini geçirin.
Seni doğru anlıyorsam, bu sana yardım etmeli.
SolarSystem.xml:
<?xml version="1.0" encoding="UTF-8"?>
<SolarSystem>
<Planets>
<Planet Id="1">
<Name>Mercury</Name>
</Planet>
<Planet Id="2">
<Name>Venus</Name>
</Planet>
<Planet Id="3">
<Name>Earth</Name>
</Planet>
</Planets>
</SolarSystem>
kod <Planet>
Merkür bulur kaldırır, bunun için fazladan eleman ekler ve <Planets>
koleksiyonun sonunda onu reinserts. verir
XDocument SolarSystem = XDocument.Load(Server.MapPath("SolarSystem.xml"));
IEnumerable<XElement> Planets = SolarSystem.Element("SolarSystem").Element("Planets").Elements("Planet");
// identify and change Mercury
XElement Mercury = Planets.Where(p => p.Attribute("Id").Value == "1").FirstOrDefault();
Mercury.Add(new XElement("YearLengthInDays", "88"));
// remove Mercury from current position, and add back in at the end
Mercury.Remove();
Planets.Last().AddAfterSelf(Mercury);
// save it as new file
SolarSystem.Save(Server.MapPath("NewSolarSystem.xml"));
:
<?xml version="1.0" encoding="UTF-8"?>
<SolarSystem>
<Planets>
<Planet Id="2">
<Name>Venus</Name>
</Planet>
<Planet Id="3">
<Name>Earth</Name>
</Planet>
<Planet Id="1">
<Name>Mercury</Name>
<YearLengthInDays>88</YearLengthInDays>
</Planet>
</Planets>
</SolarSystem>
Bu sadece yukarıdaki @Ralph Lavelle örneğine dayanır. Ben tam bir konsol uygulaması oluşturdum böylece & daha iyi anlayabiliyordum. Figürlü paylaşırdım. Yukarıdaki aynı örnek XML'i kullanır, ancak Server.MapPath() 'a yapılan başvuruları, onları nasıl çalıştıracaklarını anlayamadığım için kaldırmam gerekiyordu. İşte böyle:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
class LinqDemo
{
static void Main()
{
XDocument SolarSystem = XDocument.Load("SolarSystem.xml");
IEnumerable<XElement> Planets = SolarSystem.Element("SolarSystem").Element("Planets").Elements("Planet");
// identify and change Mercury
XElement Mercury = Planets.Where(p => p.Attribute("Id").Value == "1").FirstOrDefault();
Mercury.Add(new XElement("YearLengthInDays", "88"));
// remove Mercury from current position, and add back in at the end
Mercury.Remove();
Planets.Last().AddAfterSelf(Mercury);
// save it as new file
SolarSystem.Save("NewSolarSystem.xml");
}
}
Belki de bu benim gibi başka bir LINQ noob'a yardımcı olur.
Özlü çalışma örneğini takdir edin. '' System'i kullanarak '' *** 'nin gerekli olmadığını buldum. Ama bu 'System.Xml kullanarak' '*** gereklidir. – DavidRR
Oldukça hoş geldiniz. Aradığım cevabı görecek bir soru bulmaktan ve bununla ilgili olarak nasıl gideceğine dair belirsiz bir koddan nefret ediyorum. Kullanım hatasını iyi yakalayın. – delliottg
- 1. Linq to XML - İçindekiler dönüşümü
- 2. LINQ to SQL - Hayır Yöntem ekle
- 3. Linq to XML bir öznitelik değeri için bir düğüm noktası seçilmesi
- 4. vb.net linq Yeni kayıt ekle
- 5. Linq To SQL ve
- 6. JQuery üst düğümü kaldır
- 7. LINQ to XML - bir önek ile torunlara erişme
- 8. jQuery'yi kullanarak bir sınıf ekle ve kaldır?
- 9. Linq-to-xml içinde xname kullanma
- 10. Linq to XML iç içe geçmiş sorgu
- 11. Linq To-SQL
- 12. LINQ-to-Varlıklar, aynı sütun adı
- 13. varsa ben yeni bir değerle, tek bir düğümü bir XML belgesi okumak ve güncellemek için Ruby kullanıyorum Nokogiri
- 14. Linq To Xml Boş Bunu kullanarak linq ayrıştırmak istiyorum nitelikler
- 15. LINQ to XML kullanarak Şifreli XML dosyasını nasıl okuyabilirim/yazarım?
- 16. C Bağlantılı listeden düğümü kaldır
- 17. XML düğümü adı ve özellikler mevcut değildir
- 18. XML için düğümü NOACT-SQL kullanarak ekleyin.
- 19. Belirli bir düğümü xml içinde silme
- 20. Tek bir sütunu LINQ to SQL
- 21. C# Foreach XML düğümü
- 22. iOS görünümden bir gölge ekle/kaldır
- 23. xml düğümü için
- 24. LINQ-to-SQL CompiledQuery.Compile() ile Güncelle, Sil, Ekle?
- 25. Oturumda LINQ To Entity
- 26. Linq to SQL (-)
- 27. Bir xml etiketinden aynı düzeyde linq bir özniteliği nasıl seçerim? Aşağıdaki xml olarak
- 28. Ekle ve kaldır sınıf Jquery'yi tıklatın
- 29. Düğüm js ve kullanırken yeni
- 30. AJAX: tabloya yeni satır ekle veya AJAX kullanarak kaldır veya
+1: İnsanları işe almak için güzel 101 örnek –