XML Document 만들기 부터 Node 접근까지...


간단한 것이지만...
뭐 그리 뚜렷하게 풀어 설명해 놓은 것도 없기에...
그렇다고 자세히 설명 하는 것은 아니지만...

조그만 프로그램을 하나 만들고

소스를 디버깅하면서 아하... 이렇게 접근을 하는 구나 라고 느끼실 수 있을 것 같습니다.

만들 프로그램... 역시 그리 대단하지 않습니다.


 


폼하나 여시고 버튼세개를 올립니다.

비하인드 코드창에는 

Imports System.Xml

를 추가합니다.

XML 을 사용할 것이니 당연하겠죠..

그리고 



<?xml version="1.0" encoding="euc-kr"?>
<Filters />

이런 Filters Root Entity만 들어가 있는 XML 파일을 하나 만듭니다.
그리고 'UserFilter.xml" 이라는 이름으로 저장을 하시고

어플폴더에 복사를 해 놓습니다.

그리고 차례로 버튼을 더블클릭하여 이벤트 코드를 만드시고
아래의 소스를 복사해서 넣습니다.


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        doc = New XmlDocument()

        If (Not System.IO.File.Exists("Filter.xml")) Then
            doc.Load("UserFilter.xml")
        Else
            doc.Load("Filter.xml")
        End If

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim root As XmlNode = doc.DocumentElement

        For k As Integer = 0 To 2 Step 1

            Dim xeFilter As XmlElement = doc.CreateElement("Filter")
            Dim xeFilterName As XmlElement = doc.CreateElement("Name")

            Dim xeColumnFilters As XmlElement = doc.CreateElement("ColumnFilters")

            For j As Integer = 0 To 5 Step 1

                Dim xeColumnFilter As XmlElement = doc.CreateElement("ColumnFilter")
                Dim xaColumnName As XmlAttribute = doc.CreateAttribute("ColumnName")
                Dim xaLogicalOperation As XmlAttribute = doc.CreateAttribute("LogicalOperation")
                xaColumnName.InnerText = "CoumnName" + j.ToString()
                xaLogicalOperation.InnerText = "LogicalOperation" + j.ToString()
                xeColumnFilter.Attributes.Append(xaColumnName)
                xeColumnFilter.Attributes.Append(xaLogicalOperation)

                For i As Integer = 0 To 3 Step 1

                    Dim xeFilterCondition As XmlElement = doc.CreateElement("FilterCondition")
                    Dim xaComparisonOperator As XmlAttribute = doc.CreateAttribute("ComparisonOperator")
                    Dim xaCompareValue As XmlAttribute = doc.CreateAttribute("CompareValue")
                    xaComparisonOperator.InnerText = "ComparisonOperator" + i.ToString()
                    xaCompareValue.InnerText = "CompareValue" + i.ToString()
                    xeFilterCondition.Attributes.Append(xaComparisonOperator)
                    xeFilterCondition.Attributes.Append(xaCompareValue)

                    xeColumnFilter.AppendChild(xeFilterCondition)
                Next

                xeColumnFilters.AppendChild(xeColumnFilter)
            Next
            xeFilter.AppendChild(xeFilterName)
            xeFilterName.InnerText = "woojja" + k.ToString()

            xeFilter.AppendChild(xeColumnFilters)

            root.AppendChild(xeFilter)

        Next
        doc.Save("Filter.xml")

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim root As XmlNode = doc.DocumentElement

        Dim xmlColumnFilterList As XmlNodeList = root.SelectNodes("Filter[Name='woojja1']")
        xmlColumnFilterList = root.SelectNodes("Filter[Name='woojja1']/ColumnFilters")
        xmlColumnFilterList = root.SelectNodes("Filter[Name='woojja1']/ColumnFilters/ColumnFilter")

        For Each columnFilterNode As XmlNode In xmlColumnFilterList

            Dim strColumnName As String = columnFilterNode.Attributes("ColumnName").Value
            Dim strLogicalOperation As String = columnFilterNode.Attributes("LogicalOperation").Value

            Dim filterConditionList As XmlNodeList = columnFilterNode.SelectNodes("FilterCondition")

            For Each filterConditionNode As XmlNode In filterConditionList

                Dim strComparisonOperator As String = filterConditionNode.Attributes("ComparisonOperator").Value
                Dim strCompareValue As String = filterConditionNode.Attributes("CompareValue").Value
            Next
        Next
    End Sub


흑... 복사해 놓고 보니 토나올것 같군요... ㅡㅡ'

코드창에 복사해 넣으면 그리 나쁘진 않습니다.

그리고 위 빨갛게 칠해 놓은 부분에 BreakPoint 를 거신후에..

버튼 1, 2, 3번을 차례로 클릭합니다.

1번에서 에러나시는 분들... 꼭있습니다.
걍 적당히 xml 파일을 이동시켜 놓으세요. ㅋㅋㅋ (알아서 좀 하세요.)

버튼 2번은 내용은 잘 보시면 XML 의 Element와 Attribute 를 어떻게 추가하는지 아실 수있습니다.

그리고 버튼 3번은 Element 와 Attribute 를 어떻게 접근하는 지 아실 수 있는데...

BreakPoint 를 찍으라는 이유는...

        root.SelectNodes("Filter[Name='woojja1']")
        root.SelectNodes("Filter[Name='woojja1']/ColumnFilters")
        root.SelectNodes("Filter[Name='woojja1']/ColumnFilters/ColumnFilter")

XPath 를 어떻게 사용할 수 있는지 사용방법을 보시라고...

역시 허접한 정리였습니다.





부디 행복한 고수되셔요...



woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


Root 2008-04-22 오전 10:18:20
비주얼베이직에서 XML 다루는 예제를 찾고 있었는데 많은 도움이 되었습니다. 감사해요 ^^
반응형
폼을 하나 만드시고 
리스트 박스 하나, 버튼 두개 올리시고 아래 소스를 복사해서 실행시켜보시지요...

무식한 정환이... 
멀티 컬럼이라는 새로운 속성에 좋아라 했답니다.
근데 실은 멀티 컬럼이라고 해서 리스트 뷰처럼 하나의 아이템에 두 컬럼 혹은 세 컬럼이 나오는 그런 속성인줄 알았었는데... 조금은 실망했습니다. 하지만 서도 새로운 걸 발견했다는... (이제서야... ㅡㅡ')
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim x As Integer
        ' Add items to the ListBox.
        For x = 0 To 50
            ListBox1.Items.Add("Items " + x.ToString())
        Next x
        ' Display items in columns.
        ' Determine the width of the items in the list to get the best column width setting.
        Dim width As Integer = CInt(ListBox1.CreateGraphics().MeasureString(ListBox1.Items(ListBox1.Items.Count - 1).ToString(), _
           ListBox1.Font).Width)
        ' Set the column width based on the width of each item in the list.
        ListBox1.ColumnWidth = width

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ListBox1.MultiColumn = Not ListBox1.MultiColumn
    End Sub
End Class


 


행복한 고수되셔요...


woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


== 소스는 MSDN 을 약간 변형한 것입니다.
반응형

업종

정보통신 - 인터넷서비스/포털/컨텐츠

기업형태

일반기업

대표자명

주태산

종업원수

100

상장여부

미상장

급여제도

연봉제

자본금

2,408,000,000

매출현황

미기재

 

회사주소

서울 서초구 서초동 143-15 윤일빌딩 5

복리후생

연차, 4대보험, 경조금, 5일근무, 퇴직금, 경조휴가, 장기근속자포상, 우수사원표창/포상, 사내 동호회 운영

 

  

      

 

1.  모집분야별 전공

/윈도우 전산 개발자(신입)

-          VC, VB6, .NET, ASP, Powerbuilder, Java

2.  지원자격

A.   대졸 이상의 전공자

B.   개발 업무 가능

3.  전형 일정

A.   서류 접수 마감 : 5 6

B.   1 면접 테스트 : 5 8 ( 면접 대상자 개별 통보 )

C.   2 면접           : 5 12 ( 면접 대상자 개별 통보 )

D.   합격자 발표         : 5 18

전형내용/일정은 회사 사정에 의해 변경 있음

4.  제출서류

A.   이력서 (사진 포함) 1

자신이 가장 자신있게 사용 있는 언어를 기재 .

B.   자기소개서 1    

지도교수의 연락처를 기재할 .

5.  지원서 접수 문의처

A.   서류접수 : 2009. 4. 24() ~ 5. 6() 24:00

B.   접수방법 : 이메일접수 (woojja @ maxmovie.com)

C.   문의처 : 02-2023-1331

D.   담당자 : 우 정환 과장

6.  급여책정

A.   당사 사규에 준함.

반응형

+ Recent posts