xml kayıt değiştirmek.

Başlatan armsistem, 14 Eylül 2012, 22:35:42

armsistem

Arkadaşlar merhaba , ds1820 ile sicaklık okuyorum pc'ye gönderiyorum , pc'den diğer bilgisayarlar sicaklık değerini okuması için servera xml olarak gönderiyorum ,clientler sicaklığı okuyor buraya kadar problem yok lakin problem xml olarak yazdıktan sonra problem başlıyor. Çünkü belli sürelerde ds1820 sicaklık okuyup xml deki değerleri güncellemesi gerekiyor , fakat xml deki değerleri değiştiremiyorum ,kısa yoldan okuma esnasında dosyayı silip tekrar oluşturmak istedim fakat dosya kullanılıyor hatası verip dosyayı oluşturamıyorum. XML 'e okadar seri bir yazma veya okumada yok. mesala 2 dak xml güncelleniyor diğer clientler 1,5 dak. bir okuma yapıyor şekilde.


Ds1820-------->Mcu<----------->Pc<--------->SERVER<-------->Client Pc

    void xml_kaydet (string d,string e)
        {         try   {            
              XmlTextWriter xmlDocument = new XmlTextWriter(@"\\server\data\temperature.xml", System.Text.UTF8Encoding.UTF8);         
                //xmle yazma işlemini başlattım
                xmlDocument.WriteStartDocument();
                //channel ve item elementlerini oluşturup verileri kayıdını gerçekleştirdim.
                xmlDocument.WriteStartElement("CHANNEL");
                xmlDocument.WriteStartElement("ITEM");
                xmlDocument.WriteElementString("sicaklik", d.ToString ());
                xmlDocument.WriteElementString("tarih", e.ToString ());
                //channelve item taglarını kapattık
                xmlDocument.WriteEndElement();
                xmlDocument.WriteEndElement();
                //dökümanı sonlandırdım
                xmlDocument.WriteEndDocument();
                //ve son olarak xml ile bağlantıyı kestim. bu kısım çok önemli eğer bu kodu unutursak
                //bu xml dosyasına okumak yada yazmak istersek bağlamanayız.
                xmlDocument.Close();
            }
            catch
            {
                System.IO.File.Delete(@"\\server\data\temperature.xml");   
    }

        }

  

        private void timer1_Tick(object sender, EventArgs e)
        {
                 deger = userControl11.serial_config("com99");
                   date = Convert.ToString(DateTime.Now.ToString());     
                     xml_kaydet(deger, date);
         
        }



ULAGA

Az önce aşağıdaki projeyi hazırladım.
Sorununa çözüm bulabilirsin, sanırım.
Yalnız projeyi, VS2012 ve .NET 3.5 ile hazırladım.



https://rapidshare.com/files/1789114251/XMLProcesses.zip

muhittin_kaplan

hocam ben olsam bir dataset e atar oradan dataset.writexml ile uğraşmadan yazardım.
(datasete atarak bir sonra belki yapacağımız veritabanına -sql server örneğin oradanda web- da hazırlık olmuş olurdu.)

teknikelektronikci

sorabilirmiyim acaba bu xml tam ollarak nedir ? ne sie yarar yani c ye cok benziyor ama niye ben xml dosyasi hazirlayayim - Tesekürler
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

muhittin_kaplan

Hocam C ye pek benzemez aslında. HTML ye daha çok benzer ki aynı zat ortaya çıkarmıştır.
Aslında yaptığı çeşitli platformlar arası veri depolanmasını/okunmasını sağlamak. Belli bir hiyerarşide bilgi depolamaya yarar.
Node lar vardır ve bunlar belli bir sıralı sicile tabidir.
<kullanicilar>
  <kullanici id="1">
      <ad>A</ad>
      <soyad>B</soyad>
  </kullanici>
  <kullanici id="2">
      <ad>C</ad>
      <soyad>D</soyad>
  </kullanici>
  <kullanici id="5">
      <ad>E</ad>
      <soyad>F</soyad>
  </kullanici>
  <kullanici id="8">
      <ad>G</ad>
      <soyad>H</soyad>
  </kullanici>
</kullanicilar>


yukarda ki blokta Kullanıcılar ın altında Kullanıcı olarak kayıt edilmiş 8 adet kayıt ın ad ve soyadları mevcut. Bunu birçok yerden okuyabilirsiniz.

ULAGA

Alıntı yapılan: muhittin_kaplan - 28 Eylül 2012, 16:22:24
hocam ben olsam bir dataset e atar oradan dataset.writexml ile uğraşmadan yazardım.
(datasete atarak bir sonra belki yapacağımız veritabanına -sql server örneğin oradanda web- da hazırlık olmuş olurdu.)

Güzel bir fikir gibi görünüyor.
Ancak sadece XML ile çalışılması gerekilen yerlerde, bu şekilde çalışması daha mantıklı. ;)


Alıntı yapılan: teknikelektronikci - 28 Eylül 2012, 16:45:38
sorabilirmiyim acaba bu xml tam ollarak nedir ? ne sie yarar yani c ye cok benziyor ama niye ben xml dosyasi hazirlayayim - Tesekürler

http://tr.wikipedia.org/wiki/XML

Veli B.

Alıntı yapılan: ULAGA - 28 Eylül 2012, 19:58:13
...
Ancak sadece XML ile çalışılması gerekilen yerlerde, bu şekilde çalışması daha mantıklı. ;)
...


Bu kısmı detaylı bir şekilde açabilir misiniz?

Anlayamadım. Mantığı kavramak istiyorum.

ULAGA

Alıntı yapılan: katana - 29 Eylül 2012, 00:47:45
Bu kısmı detaylı bir şekilde açabilir misiniz?

Anlayamadım. Mantığı kavramak istiyorum.

Kurduğum cümle aslında, anlatmak istediğini pek yansıtmadı. :)
Datasetler genellikle SQL gibi veritabanı işlemlerinde kullanılır.
XML ise başlı başına kendi kuralları olan veri depolama biçimidir.
Microsoft, .NET'te XML ile çok rahat çalışabilmek için Linq to XML yöntemini geliştirmiştir.
O yüzden, XML olan bir kayıt üzerinde, tablosal çalışan Dataset ile çalışmak bana pek mantıklı gelmiyor.
Zira koşu bantları ayrı.

armsistem

#8
Yanıtlar için teşekkürler.

mesaj birleştirme:: 29 Eylül 2012, 20:34:32

Aşağıdaki örneği incelemenizi tavsiye ederim.

http://s2.dosya.tc/server20/KUZVZe/XPath.rar.html