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 に答える