2012-07-19 4 views
2

나는이 XML 문서가 :Linq에 - 투 - XML하여 XDocument 네임 스페이스 문제에

<?xml version="1.0" encoding="utf-8"?> 
<directoryresponse xmlns="https://www.sisow.nl/Sisow/REST" version="1.0.0"> 
    <directory> 
    <issuer> 
     <issuerid>01</issuerid> 
     <issuername>ABN Amro Bank</issuername> 
    </issuer> 
    <issuer> 
     <issuerid>02</issuerid> 
     <issuername>ASN Bank</issuername> 
    </issuer> 
    </directory> 
</directoryresponse> 

그리고이 작동하지 않습니다

var banks = doc.Descendants("issuer").Select(x => 
    new Bank(Convert.ToInt32(x.Element("issuerid").Value), x.Element("issuername").Value)).ToList(); 

그러나이 때 수동 제거합니다 directoryresponse의 XML 네임 스페이스 xmlns="https://www.sisow.nl/Sisow/REST"을 공장! 네임 스페이스 URL은 입니다. 그러면 xdoc이 404 인 경우 네임 스페이스를 무시하지 않는 이유는 무엇입니까?

이 또한 작동하지 않습니다 var banks = doc.Elements().Where(e => e.Name.LocalName == "issuer").Select(...

주요 질문은 : 그것은 404 네임 스페이스를 무시하도록 어떻게 내 코드를 수정할 수 있습니까?

답변

4

URL 자체는 무의미합니다. 실제로는 네임 스페이스의 토큰입니다. 나는 LINQ to XML이 그것을 가져 오려고 시도 할 것이라고 생각하지 않는다.

XNamespace ns = "https://www.sisow.nl/Sisow/REST"; 
var banks = doc.Descendants(ns + "issuer") 
       .Select(x => new Bank((int) x.Element(ns + "issuerid"), 
            (string) x.Element(ns + "issuername")) 
       .ToList(); 
:

그러나, 당신은 검색 할 XName를 구성하는 데 사용할 필요가