PROGRAMMING WORKSHOP

.Net FrameWork,VB.Net | PictureBox, LINQ to XML

System.Xml.Linq.XElement ,복잡한 정보는 별도로 보관하고 필요할때 참조하는 방법으로..

아래의 XML문속에 또다른 xml화일을 참조하는 정보가 있다
이것을 불러 들여서 윈도우폼상에 표현하면 해당 xml화일의 정보는
모두 처리해보는 셈이 된다


''<data>
''  <talk>remember today is</talk>
''  <file>https://i.pinimg.com/564...|https://i.pinimg.com/564x/a9/0b/....</file>
''	<date>2017/10/12</date>
''    <category>peace</category>  
''    <desc>remembertodayis.xml</desc>
''</data>

위와 같이 별도의 xml화일을 준비하는 이유는
많은 글을 작성하는 것을 목록을 위한 xml화일에 같이 넣는 것은 데이타관리의 요령에서 벗어난다
엑셀에서 참조,참조하면서 다른 정보를 불러서 보듯이
프로그래밍은 복잡하고 량이 많은 정보는 별도로 보관하고
필요할때 불러 오는 것이 좋은 전략이다
목록을 위한 xml화일과 컨텐츠를 위한 xml화일로 구분하여 사용하는 것이
좀더 효율적인 셈이다
물론 하나의 XML화일에 몽땅 때려 넣어도 되겠지만, 량이 많아지면 비효율적일 것이다
작업로드등을 감안하여 분리하는 생각도 항상 갖는 것이 좋다
위의 컨텐츠가 들어있는 xml화일을 불러서 윈도우컨트롤중의 텍스트상자에 넣으면
글자가 줄바꿈을 하는 작업을 코딩해야 한다..귀찮은 일이다
이런 귀찮은 일을 해주는 것은 무엇이 없을까???
RichTextBox콘토롤이라는 것이 제공된다,
이것을 두개를 모두 사용하여 보시도록 하자
아하..이 콘트롤을 이렇게 사용하면 아주 간단하구나!!!



LINQ문은 집합체에서 어떤 조건에 맞는 정보만 또 다른 집합체로
뚝딱 만들어내는 언어라고 보시면 된다
기존의 순환문을 돌리지 않고, 말하듯이 작성하면 LINQ가 알아서
순환을 최적화된 상태에서 해준다
LINQ TO XML은 또한 특별이 XML문으로 작성된 집합체정보를
LINQ언어를 이용하여 가져 오는 것이고..
그러니 LINQ는 꼭 손에 넣으셔야 한다
물론 VBA에서 하듯이 순환을 해도 된다..
하지만 좀더 개발자로서 쫌, 있어 보이려면 반드시 챙겨야 한다

Dim oElements As System.Xml.Linq.XElement = XElement.Load(XML_FILE)

Dim oMyNode As IEnumerable(Of XElement) =
 From Q In oElements.Elements
 Where Q.<talk>.Value = sTalk
 Select Q

Dim sImgFile = oMyNode.<file>.Value
Dim sFile As String = oMyNode.<desc>.Value
Dim oElements_ As System.Xml.Linq.XElement = XElement.Load(XML_CONTENT_FILE & sFile)

'' TextBox콘트롤로 하면 xml상의 줄바꿈이 그대로 옮겨지지 않는다
'' 하지만 RichTextBox1은 그대로 옮겨지니까, 편리하다
'' 테스트로 보시게 하기 위하여 두개를 같이 만들어 놓았다
Me.RichTextBox1.Text = StrConv(oElements_.<data>.Value, vbProperCase)
Me.TextBox1.Text = StrConv(oElements_.<data>.Value, vbProperCase)
Me.RadioButtonRichTextBoxView.Checked = True

설명은 아래의 첨부화일에서 더 살펴보시기를...

***[LOG-IN]***