2010-03-22 7 views
1

여기 내 XML 응답입니다 :여러 기본 네임 스페이스가있는 XML을 구문 분석하는 방법은 무엇입니까?

<DIDL-Lite 
xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" 
xmlns:dc="http://purl.org/dc/elements/1.1/" 
xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" 
<item id="1182" parentID="40" restricted="1"> 
<title>Hot Issue</title> 
</item> 
</DIDL-Lite> 

내가 xELemnt를 사용하여 분석하고 다음과 같은 VAR에 할당하려고 노력하고 있어요 :

var vnyData = from xmyResponse in xResponse.Descendants("DIDL-Lite").Elements("item") 
select new myClass 
            {strTitle = ((string)xmyResponse .Element("title")).Trim()}; 

이 어떤 결과를 yeilding되지 않습니다. 이 명명 된 네임 스페이스 것처럼

덕분에, Subhendu

답변

1

문서의 기본 네임 스페이스가, 당신은 그것을 구문 분석해야합니다. 예를 들어.

XNamespace ns = "urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"; 

var xDIDL = xResponse.Element(ns + "DIDL-Lite"); 

ns 변수의 이름은 무엇이든 중요하지 않습니다. 핵심은 요소 이름 (정확한 XName)을 전달하는 곳이면 네임 스페이스 + 이름을 포함해야한다는 것입니다. 문자열은 XNamespace로 변환 가능하지만 생성자를 사용할 수도 있습니다.

+0

감사합니다. Mr. Einstein. 내 문서에는 여러 Namespace이 있습니다.이 경우에는 다음과 같이 써야합니다. XNamespace ns = "urn : schemas-upnp-org : metadata-1-0/DIDL-Lite /"; XNamespace ns1 = "http://purl.org/dc/elements/1.1/"; XNamespace ns2 = "urn : schemas-upnp-org : metadata-1-0/upnp /"; var xDIDL = xResponse.Element (ns + ns1 + ns2 + "DIDL-Lite"); – Simsons

+0

아니요, XML 문서에서 접두어가없는 요소는 "기본"네임 스페이스에 있습니다 (즉, xmlns : "..."와 xmlns : prefix = "..."가 아닌)라는 네임 스페이스에 있습니다. 그래서 당신은 ns + "ElementName"을 할 필요가 있습니다. 그러나 다른 네임 스페이스의 요소를 참조하는 경우 ns1 + "ElementName"또는 ns2 + "ElementName"을 수행해야하지만 특정 요소 이름에 대해 두 개 이상의 네임 스페이스를 사용해야합니다. – Josh

0

액세스하려는 요소의 이름에 xml 스키마가 있어야합니다. XNamespace 클래스를 확인하십시오.

관련 문제