C#/프로그래밍 고급
C# 프로그래밍 고급 - 13. Linq 응용
tita
2024. 5. 30. 18:21
Linq는 다양하게 응용이 가능하지만 그 중 대표적으로 XML와 결합할 수 있습니다.
<Linq to XML>
XML은 데이터를 나타내는 데 사용되는 다목적 마크업 언어입니다.
XML의 기본 용어와 규칙으르 살펴보겠습니다. XML은 요소(Element)라고 부르는 태그(Tag)로 구성됩니다.
내용이 있는 태그 : <태그> 내용 </태그>
내용이 없는 태그 : <태그 / >
XML 태그는 속성으로 추가적인 값을 가질 수 있습니다.
내용이 있는 태그 : <태그 속성="값" 속성="값" 속성="값"> 내용 </태그>
내용이 없는 태그 : <태그 속성="값" 속성="값" 속성="값" / >
다음과 같은 형태로 계층 구조를 만들게 되는데 최상위에는 요소가 하나만 올 수 있습니다.
<people>
<person birthday="12/09">
<name>윤인성</name>
<region>서울</region>
</person>
<person birthday="2/14">
<name>연하진</name>
<region>대구</region>
</person>
</people>
<웹에서 XML 가져오기>
웹에서 XML 데이터를 가져올 때는 XElement.Load() 메서드를 사용합니다.
XElement.Load() 메서드의 매개변수에는 웹에서 가져오고 싶은 XML의 경로를 지정합니다.
class Program
{
static void Main(string[] args)
{
string url = "http://www.kma.go.kr/wid/queryDFSRSS.jsp?zone=1150061500";
XElement xElement = XElement.Load(url);
Console.WriteLine(xElement);
}
}
<XML 파싱>
웹에서 가져온 XML 데이터를 우리가 원하는 형태로 변환하는 것을 파싱(Parsing)이라고 간단하게 부릅니다.
Linq를 활용해서 xElement 객체(XML 파일)의 Descendants() 메서드를 활용해 data라는 이름의 태그를 모두 추출합니다.
// data 태그 추출
static void Main(string[] args)
{
string url = "http://www.kma.go.kr/wid/queryDFSRSS.jsp?zone=1150061500";
XElement xElement = XElement.Load(url);
var xmlQuery = from item in xElement.Descendants("data")
select item;
foreach(var item in xmlQuery)
{
Console.WriteLine(item);
}
}