使用LinqToXml读取XML

时间:2013-11-02 23:44:27

标签: xml linq-to-xml xmldocument xelement

我有一个xml来源,你可以从http://eft.tcmb.gov.tr/bankasubelistesi/bankaSubeTumListe.xml

获得

我想阅读这个xml并将其解析到我的数据库中,但是对LinqToXml有困难

我尝试了很多方法但始终descendantselements都是空的。我的最终方法如下:

 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) {
 }

任何帮助都将受到高度赞赏。 谢谢!

1 个答案:

答案 0 :(得分:2)

由于您的XML使用命名空间,因此您需要使用XNamespace。

这是一个解答这个问题的答案的链接:

Use Linq to Xml with Xml namespaces

所以你可以尝试(未经测试):

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) {
 }

简化的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>
相关问题