간만에 블로깅이라는 걸 하네요...
도대체 마지막에 적은게 언젠지 모르겠네... ㅋㅋ

요즘 Report 를 한다고 피를 철철 흘리고 있습니다.

지금도 바닥에 흥건하게 고여있네요... ㅋㅋㅋ

거기다 VB.Net 으로 개발하면 쉽게 갈수도 있는 것을 C#으로 개발 하고 있으니 그 헤딩이야 오죽하겠습니까? ㅋㅋㅋ

어제 정보를 찾다가... 합!!! 맞아... 여기에 이런게 있었지.. 하며... 즐거운 표정을 지었습니다.

몇년전에 봤는지도 기억이 안나네요... 정말 오래간 만에 본 기분 좋은 아티클이었습니다.

그리고 생각해 봤습니다.

어떤것이 진정한 기술인가를요...

office 2007로 개발을 해야하고, VSTO를 쓸줄아는 것, 그렇게 최신의 것을 따라가는 것. 그래서 옛날 방식은 기술이 아닐까요?

반복된 헤딩과 F8번의 Pressing 은 기술이 아닐까요?



이런 세계가 있을지도 모른다는 생각. 그 자체도 못한 무지의 소산이 아닐까 합니다. ^^


이 아티클 자체도 Office 2000, XP로 개발 한 저로써는 엄청난 기술입니다. ㅋㅋㅋ
속속들이 알지 못해 자유자제로 못쓰는 것이 저의 한계겠죠?
이런? 날코딩과 날밤세며 하는 맨땅의 헤딩을 알아야 VSTO 의 감사함을 알수 있지 않을까요? ^^

오히려 VSTO 의 한계를 느낄 정돕니다. 캬캬캬...






Office 개발 하시는 분들 한번 보시고 Office 기술을 맘껏 느끼시죠...

Understanding the Excel Object Model from a .NET Developer's Perspective

Understanding the Word Object Model from a .NET Developer's Perspective


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












저작자 표시 비영리 변경 금지
신고
Posted by woojja
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 다루는 예제를 찾고 있었는데 많은 도움이 되었습니다. 감사해요 ^^












저작자 표시 비영리 변경 금지
신고
Posted by woojja

이제야 올리네요... ^^'

Microsoft .NET Framework 3.5 June 2007 Community Technology Preview (CTP)


3.0 도 책만 긁적이고 있는데 3.5까지... ㅡㅡ'

공부 열심 안해도 먹고 살수 있는 방법 없을까요?

근데... 제가 그 거 알면 할 수 있을까요? ㅡㅡ' 

그 방법 익히느니 계속 열심히 하는게 낫겠죠?

뭐든 걍 열심히 가는 거죠 뭐...


형님 그냥 가 보는 거예요... 쭈~~욱. ^^



행복한 고수되셔요...


woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
정성태 2007-07-25 오후 10:50:59
참고로, ^^ .NET 3.5 6월 CTP 버전을 포함한 VS.NET 2008 June CTP 도 나오긴 했습니다만, 일부 베타 테스터들(저를 포함 ^^) 에게만 공개된 상태입니다.
Reply Delete
woojja 2007-07-25 오후 11:57:03
후하~~ (^^)=b

정책임님 짱 ~!












저작자 표시 비영리 변경 금지
신고
Posted by woojja
이전버튼 1 이전버튼

티스토리 툴바