C# Da XML Ler Arası Veri Alişverisi
-
merhaba
ikitane xml arası bilgi alıs verisi nasıl yapabilirim
bir dukkanın tum urun bilgilerini tutan xml dosyasından sadece satılanların veya secilenlerin ayrı bir xml dosyasına aktarılması ve satılan urunlerın toplam fiyatını hasaplatırmam lazım ...
bu konuda kaynak önerilicek veya yardımcı olabilcek varmi ?
-
//satırları aktarma
DataSet ds = new DataSet();
ds.ReadXml(yol);
DataRow[] rows = ds.Tables[0].Select("durum = 0");
XmlTextWriter xr = new XmlTextWriter(yeniyol);
xr.WriteStartDocument();
xr.WriteStartElement("satilanlar");
for (int i = 0; i < rows.Length; i++)
{
xr.WriteStartElement("url");
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
xr.WriteElementString(ds.Tables[0].Columns[j].ColumnName,rows[i][j].ToString());
}
xr.WriteEndElement();
}
xr.WriteEndElement();
xr.WriteEndDocument();
xr.Flush();
xr.Close();//fiyatları toplama
protected double Toplam(
{
DataSet ds = new DataSet();
ds.ReadXml(yol);
double toplam = 0;
foreach (DataRow dr in ds.Tables[0].Rows)
{
toplam += Convert.ToDouble(dr["fiyat"]);
}
return toplam;
} -
bu sorunu cozdum belki arkadaslara yardımcı olur dıye kendı cozumumu yazıyorum linq kulandım ...
ilk basta listview ekledıgımızı olustursun dıye updatelistview diye bir fonksiyon olusturdum xml mizin adı addbook.xml
public void updatelistview1()
{XDocument xmlDoc = XDocument.Load("addbook.xml");
var bks = from bk in xmlDoc.Descendants("book")
select new
{
Id = bk.Element("id").Value,
Name = bk.Element("name").Value,
Yayin = bk.Element("yayin").Value,
Autor = bk.Element("autor").Value,
Sell = bk.Element("sellp").Value,
adet = bk.Element("adet").Value,
};
ListViewItem item;
this.listView1.BeginUpdate();
this.listView1.Items.Clear();
foreach (var items in bks)
{
item = this.listView1.Items.Add(items.Id);
item.SubItems.Add(items.Name);
item.SubItems.Add(items.Autor);
item.SubItems.Add(items.Yayin);
item.SubItems.Add(items.Sell);
item.SubItems.Add(items.adet);
}
this.listView1.EndUpdate();
}}
simdi xml e eklemek ıcın ve her ekledıgım listview de gozukmesı ıcın
private void addbtn_Click(object sender, EventArgs e)
{
XDocument xmlDoc = XDocument.Load("addbook.xml");
xmlDoc.Root.Add(
new XElement("book",
new XElement("id", this.textBox2.Text),
new XElement("name", this.textBox3.Text),
new XElement("yayin", this.textBox4.Text),
new XElement("autor", this.textBox5.Text),
new XElement("sellp", this.textBox6.Text),
new XElement("comep", this.textBox7.Text),
new XElement("adet", this.textBox8.Text)
));
xmlDoc.Save("addbook.xml");
updatelistview2();
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
textBox5.Text = "";
textBox6.Text = "";
textBox7.Text = "";
textBox8.Text = "";
}xml de arama yapmak ıcın ise
string namme = textBox1.Text.ToString();
XDocument xmlDoc = XDocument.Load("addbook.xml");
XElement element = xmlDoc.Root.Elements("book").Where(r => (string)r.Element("name") == namme).FirstOrDefault();
var bks = from bk in xmlDoc.Descendants("book")
where bk.Element("name").Value == namme
select new
{
Id = bk.Element("id").Value,
Name = bk.Element("name").Value,
Yayin = bk.Element("yayin").Value,
Autor = bk.Element("autor").Value,
Sell = bk.Element("sellp").Value,
Come = bk.Element("comep").Value,
adet = bk.Element("adet").Value,
};
ListViewItem item;
this.listView1.BeginUpdate();
this.listView1.Items.Clear();
try
{
foreach (var eleman in bks)
{
item = this.listView1.Items.Add(element.Element("id").Value);
item.SubItems.Add(element.Element("name").Value);
item.SubItems.Add(element.Element("yayin").Value);
item.SubItems.Add(element.Element("autor").Value);
item.SubItems.Add(element.Element("sellp").Value);
item.SubItems.Add(element.Element("comep").Value);
item.SubItems.Add(element.Element("adet").Value);
adt = Int32.Parse(element.Element("adet").Value);
gfyt = Int32.Parse(element.Element("comep").Value);
}
}
catch
{
MessageBox.Show("this book not has ");
}
this.listView1.EndUpdate();
