0

我有一个 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) {
 }

任何帮助将不胜感激。谢谢!

4

1 回答 1

2

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

这是一个答案的链接,可以很好地解释这一点:

使用带有 Xml 命名空间的 Linq to Xml

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

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>
于 2013-11-02T23:57:57.570 回答