DJ메탈짱™의 Free Style

[C#] LINQ, XML파싱, xml to LINQ, foreach,같은Depth 동일 Element반환, null, Exception 본문

일(job)/MS(Microsoft)

[C#] LINQ, XML파싱, xml to LINQ, foreach,같은Depth 동일 Element반환, null, Exception

뽀&쏭 2015. 12. 31. 13:16

 

아래 예제는 <body> Element 기준으로 <aaa>,<bbb> Element 값을 반환하는 방법인데

ElementAt(1) 메소드를 통해 연속적으로 동일하게 있는 <bbb> Element가 하나면 index 예외오류가 발생함.

그럴 때 사용하는 메소드는 ElementAt à ElementAtOrDefault() 을 사용하면 해결됨.

 

 

<root>

<body>

<aaa>정보</aaa>

<bbb>1</bbb>

<bbb>2</bbb>

</body>

<body>

<aaa>정보</aaa>
< bbb>3</bbb>

</body>

</root>

 

var xmlRlt = (from xml in xmlDoc.Descendants("body") 

select new

{

columnCharacteristic1= (string)xml.Element("aaa").Value,

//만약 ElemenetAt(1) 없다면 공백 반환.

columnCharacteristic2= (string)xml.Elements("bbb").ElementAt(1) // ElementAt(1) 사용시 index 오류 발생하여 à ElementAtOrDefault(1) 로 수정하면 해당 Element가 없는 경우 null을 반환하여 에러가 발생하지 않음.

});

 

foreach (var rlt in xmlRlt)

{

colCharacteristic= rlt.aaa != null ?rlt.aaa : "";

colCharacteristic+= rlt.bbb != null ?rlt.bbb : "";

}