Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

XML Soru C#


deadea

Öne çıkan mesajlar

şimdi efem elimizde bir xml dosyamız war ve verisi şu şekilde:










şimdi ben buraya yeni cevap elementleri ve o elementlerede yeni attribute'ler eklemek istiyorum.
C#
XmlDocument xDoc = new XmlDocument();
xDoc.Load("c:herneyse.xml" );

XmlElement element = xDoc.CreateElement("Soru/deneme" );
şimdi burada sanırım yanlış giriyorum parametreleri. yada eksik birşey war, varmı xml'den anlayan?

xDoc.AppendChild(element);
xDoc.Save("c:herneyse.xml" )
Link to comment
Sosyal ağlarda paylaş

Birden fazla parent node yapmaya çalıştığın içindir?

Bir tane esas node olacak, onun içine istediklerini atabilirsin yanlış ahtırlamıyosam yani:









.......
.......


Şeklinde oluşturmayı dene.

Senin gönderdiğinde "soru" parent olduğundan ikincisine izin vermiyor.

Yanlış hatırlıyosam düzeltir birileri :)
Link to comment
Sosyal ağlarda paylaş

Şimdi xml'in içeriğini değiştiremem. Soru root'una yeni bir node, element gibi birşey eklemem lazım. Bunu perşembe günü yapmıştım. takır takırda çalışıyordu ama unuttum kodları şimdi bir bakayım derken. MSDN olsun w3schools olsun o kadar çok bilgi varki beynim döndü. X(

ah bi ulaşabilsem soru köküne ekliycemde
Link to comment
Sosyal ağlarda paylaş

Hmm bu yapıda bi XML yaratcak/deiştircek olsam şöyle yazarım kodu:

Edit: Tabi bu kod o bilmemne.xml'in root node'unun "Soru" olduğunu varsayıyo, her çalıştırmada ona bi şeyler ekliyo. Birden fazla soru node'u olsun diyosan en başta Sorular diye bi node yaratır, Soru nodelarını ona eklersin ama soruda öyle denmemiş tabii.


XmlDocument doc = new XmlDocument();
try { doc.Load("C:bilmemne.xml"); }
catch { }
XmlNode nodSoru = doc[Soru] == null ? doc.CreateElement("Soru") : doc[Soru];
XmlAttribute attrSoruText = doc.CreateAttribute("Text");
attrSoruText.Value = "hede hödö";
nodSoru.Attributes.Append(attrSoruText);

XmlNode nodAnketBaslik = doc.CreateElement("AnketBaslik");
XmlAttribute attrAnketBaslik = doc.CreateAttribute("Text");
attrAnketBaslik.Value = "kjvblckjn";
nodAnketBaslik.Attributes.Append(attrAnketBaslik);

XmlNode nodCevap1 = doc.CreateElement("Cevap");
XmlAttribute attrCevap1Text = doc.CreateAttribute("Text");
attrCevap1Text.Value = "bxcvbx";
XmlAttribute attrCevap1Adet = doc.CreateAttribute("Adet");
attrCevap1Adet.Value = "1";
nodCevap1.Attributes.Append(attrCevap1Text);
nodCevap1.Attributes.Append(attrCevap1Adet);

XmlNode nodCevap2 = doc.CreateElement("Cevap");
XmlAttribute attrCevap2Text = doc.CreateAttribute("Text");
attrCevap2Text.Value = "bxcvbx";
XmlAttribute attrCevap2Adet = doc.CreateAttribute("Adet");
attrCevap2Adet.Value = "0";
nodCevap2.Attributes.Append(attrCevap2Text);
nodCevap2.Attributes.Append(attrCevap2Adet);

nodAnketBaslik.AppendChild(nodCevap1);
nodAnketBaslik.AppendChild(nodCevap2);
nodSoru.AppendChild(nodAnketBaslik);
try { doc.AppendChild(nodSoru); }
catch { }

doc.Save("C:bilmemne.xml");
Link to comment
Sosyal ağlarda paylaş

hmmm eyw hocam süper yazmışsın.
bende şimdi şu kodla yeni bir eklettirdim en alta. eğer attr'lerinide eklemeye uğraşayım biraz. olmadı senin yöntemi alıcam direk.

XmlElement element = xDoc.CreateElement("Soru", "Cevap", "" );

xDoc.ChildNodes[1].ChildNodes[0].AppendChild(element);


sonuç:







Link to comment
Sosyal ağlarda paylaş

Çok fazla xmlle uğraşmadım, ama iki tane root node olamaz. Daha önce yaptım demişsin ama yanlış hatırlıyosundur kesin. 2. bir root eklemeye çalıştığında appendchild metodu kızar sana.

Şimdi ilk postu tekrar okudum da sen zaten ikinci bir soru eklemeye çalışmıyosun. Soru senin rootun olduğuna öre içine ekleyeceğin cevaplarda sorun olmaması lazım, Kojiroh'un yaklaşımı doğru, onu kullan.
Link to comment
Sosyal ağlarda paylaş

Yazarken hepsi öyle yapıyor. İlk önce bütün dökümanı hafızada oluşturuyorsun. Sonra olduğu gibi dosyaya yazdırıyorsun.

Edit: XML okumak ve işlemek için kullanılan SAX adında event bazlı bir API. Onun XML yazmak için geliştirilmiş bir StAX diye bir versiyonu var. Onla yazarken bütün dökümanı hafızada tutmadan stream şeklinde yazdırılabiliyor.

Hatırladığım kadarıyla bahsettiğin nokta atışı hiç bir text manipulasyonu için mümkün değil. Sadece dosyanın sonuna bir şey eklersen mümkün. Aksi taktirde bütün dosyayı baştan yazman gerekiyor.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...