Question

I have an xml source which you may reach from: http://eft.tcmb.gov.tr/bankasubelistesi/bankaSubeTumListe.xml

I would like to read this xml and parse it into my database but having difficulties with LinqToXml

I tried many approaches but always descendants and elements were empty. My final approach is as below:

 XDocument xml = XDocument.Load("http://eft.tcmb.gov.tr/bankasubelistesi
                                 /bankaSubeTumListe.xml");
 var sorgu = from x in xml.Descendants("bankaSubeleri");
 select new {Banka = x.Descendants("banka"), Subeler = x.Descendants("sube")};
 foreach (var bnk in sorgu) {
 }

Any help will be highly appreciated. Thanks!

Was it helpful?

Solution

As your XML uses a namespace, you need to use an XNamespace.

Here is a link to an answer that explains this well:

Use Linq to Xml with Xml namespaces

So you could try (untested):

XDocument xml = XDocument.Load("http://eft.tcmb.gov.tr/bankasubelistesi
                                 /bankaSubeTumListe.xml");
XNamespace ns = "http://bs.tcmb.gov.tr/bankaSubeTumListe/";
 var sorgu = from x in xml.Descendants(ns + "bankaSubeleri");
 select new {Banka = x.Descendants("banka"), Subeler = x.Descendants("sube")};
 foreach (var bnk in sorgu) {
 }

Simplified XML:

<bankaSubeTumListe xmlns="http://bs.tcmb.gov.tr/bankaSubeTumListe/" tarih="01/11/2013">
<bankaSubeleri bKd="0001" sAdt="25">
<banka sonIslemTuru="D" sonIslemZamani="2013-07-10 18:32:00.100">
<bKd>0001</bKd>
<bAd>TÜRKİYE CUMHURİYET MERKEZ BANKASI</bAd>
<bIlAd>ANKARA</bIlAd>
<adr>İSTİKLAL CAD. NO:10 06100 ULUS/ANKARA</adr>
</banka>
<sube sonIslemTuru="D" sonIslemZamani="2013-07-10 18:32:00.584">
<bKd>0001</bKd>
<sKd>00001</sKd>
<sAd>ANKARA ŞUBESİ</sAd>
<sIlKd>006</sIlKd>
</sube>
</bankaSubeleri>
<bankaSubeleri bKd="0004" sAdt="3">
<banka sonIslemTuru="D" sonIslemZamani="2013-07-10 18:32:00.100">
<bKd>0004</bKd>
<bAd>İLLER BANKASI A.Ş.</bAd>
<bIlAd>ANKARA</bIlAd>
<adr>
İLLER BANKASI A.Ş BANK.HİZM.DAİ.BŞK.KAT 5 ATATÜRK BULVARI NO:21 OPERA 06053 ULUS/ALTINDAĞ ANKARA
</adr>
</banka>
<sube sonIslemTuru="E" sonIslemZamani="2013-07-11 19:30:00.000">
<bKd>0004</bKd>
<sKd>90001</sKd>
<sAd>IBAN SUBESI</sAd>
<sIlKd>999</sIlKd>
</bankaSubeleri>
</bankaSubeTumListe>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top