특정 채널에서 업로드 된 모든 비디오가 포함 된 XML 파일을 구문 분석하려고합니다. URL <media:content>
노드 중 하나에서 URL 속성 값을 가져 와서 ViewerLocation 필드에 넣으려고합니다. 그러나 그들 중 몇 가지가 있습니다. 내 현재 코드는 이것이다 :Linq에서 XML에 올바른 노드 가져 오기
var videos = from xElem in xml.Descendants(atomNS + "entry")
select new YouTubeVideo()
{
Title = xElem.Element(atomNS + "title").Value,
Description = xElem.Element(atomNS + "content").Value,
DateUploaded = xElem.Element(atomNS + "published").Value,
ThumbnailLocation = xElem.Element(mediaNS + "group").Element(mediaNS + "content").Attribute("url").Value,
ViewerLocation = xElem.Element(mediaNS + "group").Element(mediaNS + "content").Attribute("url").Value
};
그것은 나에게 이름 <media:content>
사용자가 예상하는대로와 항목에 대한 XML의 첫 번째 노드를 가져옵니다. 그러나 XML의 첫 번째 항목은 내가 원하는 것이 아닙니다. 나는 두 번째를 원해.
다음은 관련 XML입니다.
<!-- I currently get the value held in this node -->
<media:content
url='http://www.youtube.com/v/ZTUVgYoeN_b?f=gdata_standard...'
type='application/x-shockwave-flash' medium='video'
isDefault='true' expression='full' duration='215' yt:format='5'/>
<!-- What i actually want is this one -->
<media:content
url='rtsp://rtsp2.youtube.com/ChoLENy73bIAEQ1kgGDA==/0/0/0/video.3gp'
type='video/3gpp' medium='video'
expression='full' duration='215' yt:format='1'/>
<media:content
url='rtsp://rtsp2.youtube.com/ChoLENy73bIDRQ1kgGDA==/0/0/0/video.3gp'
type='video/3gpp' medium='video'
expression='full' duration='215' yt:format='6'/>
두 번째 노드에는 'video/3gpp'유형이 있기 때문에 두 번째 노드를 원합니다. 어떻게 그걸 선택하려고합니까? 속성 (type == "video/3gpp")이이 값을 얻으면 논리가
이됩니다.
하지만 Linq에서 이것을 표현하는 방법을 모르겠습니다.
감사합니다.
대니.
확장하고 설명 하시겠습니까? – DanTonyBrown
죄송합니다. 우선 확장 방법을 잘 모르겠습니다.하지만 원래 도움이되지 않았기 때문에 도움을 요청 받았습니다. – Hammerstein
where 원인을 추가하면 var에 아무 것도 반환되지 않는다는 것을 의미합니다./ – user1413671