none
XML ler İçersinde Arama Yapmak RRS feed

  • Soru

  • <C>
        <ID>2014051-QWRNR7</ID>
        <SUC>false</SUC>
        <CA>
            <IP/>
            <NAME>4002222</NAME>
            <AUDIO>G711(al)</AUDIO>
        </CA>

    <CB>
            <IP/>
            <NAME>4002222</NAME>
            <AUDIO>G711(al)</AUDIO>
        </CB>

    </C>

    gibi bir xml dosyalarım var ve her birinde bir kayıt tutuluyor. <CA> nın <NAME> göre arama yaparak bilgileri almam gerekiyor. Nasıl yapabilirim.

    20 Mayıs 2014 Salı 13:07

Yanıtlar

  • string xml = @"<C>
         <ID>2014051-QWRNR7</ID>
         <SUC>false</SUC>
         <CA>
             <IP/>
             <NAME>4002222</NAME>
             <AUDIO>G711(al)</AUDIO>
         </CA>
    
    <CB>
             <IP/>
             <NAME>4002222</NAME>
             <AUDIO>G711(al)</AUDIO>
         </CB>
    
    </C>";
    
    var bilgi = from x in XElement.Parse(xml).DescendantsAndSelf("C")
       where (int)x.Element("CA").Element("NAME") == 4002222
       select x;
    
    // diger bir ornek
    var bilgi = from x in XElement.Parse(xml).DescendantsAndSelf("C")
       select (string)x.Element("CA").Element("NAME");

    Tam olarak yapmak istedigin belli olmadigindan bu kadar yazabildim.
    21 Mayıs 2014 Çarşamba 10:54

Tüm Yanıtlar

  • XML üzerinde işlemler yapabilmen için XPath yapsını öğrenmen gerek. Bu bir iki örnekle olacak iş değil. Konuyu şuradan öğrenebilirsin. Çok uzun sürmez öğrenmen olayı anlaman yeterli olur.

    http://msdn.microsoft.com/en-us/library/ms256471(v=vs.110).aspx

    20 Mayıs 2014 Salı 20:21
  • Lütfen burada direkt sormak yerine internetten araştırsanız. Hiç bilmediğiniz konuyu çat diye sormak nasıl bişeydir. Forum kullanıcıları aptal mı?

    Arama motoruna c# xml okuma ekleme silme yaz öğren bu kadar.


    • Düzenleyen Soner KOYLU 21 Mayıs 2014 Çarşamba 06:03
    21 Mayıs 2014 Çarşamba 06:03
  • Diğer arkadaşlara katılıyorum kesinlikle. Araştırma yaparak rahatça öğrenebilirsin. Sana tavsiyem Linq To XML araştır..

    Oğuz KURTCUOĞLU - Professional Software Developer

    21 Mayıs 2014 Çarşamba 06:39
  • Lütfen burada direkt sormak yerine internetten araştırsanız. Hiç bilmediğiniz konuyu çat diye sormak nasıl bişeydir. Forum kullanıcıları aptal mı?

    Arama motoruna c# xml okuma ekleme silme yaz öğren bu kadar.


    ben kimseden direk cevap istemedim ki; <CA> nın içerisindeki <NAME> nasıl erişim diyorum. XML de birden fazla name var.

    21 Mayıs 2014 Çarşamba 10:27
  • string xml = @"<C>
         <ID>2014051-QWRNR7</ID>
         <SUC>false</SUC>
         <CA>
             <IP/>
             <NAME>4002222</NAME>
             <AUDIO>G711(al)</AUDIO>
         </CA>
    
    <CB>
             <IP/>
             <NAME>4002222</NAME>
             <AUDIO>G711(al)</AUDIO>
         </CB>
    
    </C>";
    
    var bilgi = from x in XElement.Parse(xml).DescendantsAndSelf("C")
       where (int)x.Element("CA").Element("NAME") == 4002222
       select x;
    
    // diger bir ornek
    var bilgi = from x in XElement.Parse(xml).DescendantsAndSelf("C")
       select (string)x.Element("CA").Element("NAME");

    Tam olarak yapmak istedigin belli olmadigindan bu kadar yazabildim.
    21 Mayıs 2014 Çarşamba 10:54
  • XmlDocument document = new XmlDocument();
    document.LoadXml(xml);
    document.SelectNodes("/C/CA/NAME")[0].InnerText.ToString()

    Bu şekilde de yapabilirsiniz.

    Kolay Gelsin...



    21 Mayıs 2014 Çarşamba 11:01
  • string xml = @"<C>
         <ID>2014051-QWRNR7</ID>
         <SUC>false</SUC>
         <CA>
             <IP/>
             <NAME>4002222</NAME>
             <AUDIO>G711(al)</AUDIO>
         </CA>
    
    <CB>
             <IP/>
             <NAME>4002222</NAME>
             <AUDIO>G711(al)</AUDIO>
         </CB>
    
    </C>";
    
    var bilgi = from x in XElement.Parse(xml).DescendantsAndSelf("C")
       where (int)x.Element("CA").Element("NAME") == 4002222
       select x;
    
    // diger bir ornek
    var bilgi = from x in XElement.Parse(xml).DescendantsAndSelf("C")
       select (string)x.Element("CA").Element("NAME");

    Tam olarak yapmak istedigin belli olmadigindan bu kadar yazabildim.

    var doc = XDocument.Load(FILE_ADDRESS);

    doc.Root.Element("CA").Element("NAME").Value.ToString();

    istediğim buydu. Biraz anlatım bozukluğu olmuş galiba. Kusura bakmayın. Teşekkürler. İyi çalışmalar.


    21 Mayıs 2014 Çarşamba 11:01
  • Anladim. Value.ToString() yerine casting daha uygun sanirim:

    var isim = (string)XDocument.Load(FILE_ADDRESS)
       .Root
       .Element("CA")
       .Element("NAME");
    

    21 Mayıs 2014 Çarşamba 14:20