오늘은 맛베기로 변수나 클래스선언시 사용해서는 안되는 키워드의 종류에 대해서 나열해보고자합니다.
키워드는 아래와 같습니다

MSDN에서 퍼서 추렸습니다.

 
Alias
외부프로시저의 DLL에다른이름이있음을나타냅니다.
 
AddHandler
런타임에이벤트를이벤트처리기와연결하거나이벤트처리기를추가할때실행할코드를선언합니다
 
Ansi
Visual Basic에서선언되는외부프로시저의이름에관계없이모든문자열을 ANSI(American National Standards Institute) 값으로마샬링하도록지정합니다.

프로젝트외부에서정의된프로시저를호출하면 Visual Basic 컴파일러가해당프로시저를제대로호출하는데필요한정보에액세스할수없습니다.
이정보에는프로시저의위치, 식별방법, 호출시퀀스및반환형식, 사용한문자열문자집합등이포함됩니다.
Declare 문은외부프로시저에대한참조를만들고이와같은필요한정보를제공합니다.

Declare 문의charsetmodifier부분은외부프로시저를호출하는
동안문자열을마샬링하는데사용할문자집합정보를제공합니다. 또한외부파일에서외부프로시저이름을검색하는방법에도영향을줍니다. Ansi한정자는 Visual Basic에서모든문자열을 ANSI 값으로마샬링하고검색중이름을수정하지않은채프로시저를조회하도록지정합니다.

문자집합한정자가지정되어있지않으면 Ansi가기본값으로사용됩니다
 
As
제네릭형식매개변수에대한제약조건목록이나선언문의데이터형식을식별하는 As 절을정의합니다.
 
Assembly
소스파일의시작부분에있는특성이전체어셈블리에적용되도록지정합니다.

특성은클래스나속성같은개별프로그래밍요소에속하는경우가많습니다. 특성을적용하려면특성블록을꺽쇠괄호(< >)로
묶어선언문에직접연결합니다.

특성이바로다음에이어지는요소만이아닌전체어셈블리에도해당되는경우에는특성블록을소스파일의시작부분에놓고 Assembly키워드를사용하여해당특성을식별합니다. 현재어셈블리모듈에만적용되는경우에는 Module 키워드를사용합니다.

특성을 AssemblyInfo.vb 파일의어셈블리에적용할수도있습니다. 이런경우에는기본소스코드파일에서특성블록을사용하지않아도됩니다.
 
Auto
선언되는외부프로시저의외부이름을기반으로 .NET Framework 규칙에따라 Visual Basic에서문자열을마샬링하도록지정합니다.

프로젝트외부에서정의된프로시저를호출하면 Visual Basic 컴파일러가해당프로시저를제대로호출하는데필요한정보에액세스할수없습니다.
이정보에는프로시저의위치, 식별방법, 호출시퀀스및반환형식, 사용한문자열문자집합등이포함됩니다.
Declare 문은외부프로시저에대한참조를만들고이와같은필요한정보를제공합니다.

Declare 문의charsetmodifier부분은외부프로시저를호출하는동안문자열을마샬링하는데사용할문자집합정보를제공합니다. 또한외부파일에서외부프로시저이름을검색하는방법에도영향을줍니다. Auto 한정자는 Visual Basic에서 .NET Framework 규칙에따라문자열을마샬링하도록지정하며, 런타임플랫폼의기본문자집합을결정하고초기검색이실패할경우외부프로시저이름을수정하도록지정합니다. 자세한내용은 Declare 문의 "문자집합"을참조하십시오.

문자집합한정자가지정되어있지않으면 Ansi가기본값입니다.
 
Binary
문자열비교메서드를엄격한이진정렬순서로설정합니다.

Option Compare 문은소스파일에서다른소스문앞에있어야합니다. 이문은해당소스파일에서생성된모든코드에
대한문자열비교에영향을줍니다.
 
ByRef
호출된프로시저가호출코드에서내부인수로사용하는변수의값을변경할수있도록하는방식으로인수가전달되도록지정합니다.
 
ByVal
호출된프로시저나속성은호출코드에서내부인수로사용하는변수의값을변경할수없도록하는방식으로인수가전달되도록지정합니다.
 
Case
식의값을테스트할대상값이나값집합을정의합니다.
 
Catch
Try블록안에서특정예외가발생할경우실행할문블록을정의합니다.

Try 구조체에는 Finally 블록이나하나이상의 Catch 블록이포함되어야합니다.
 
Class
전달된형식인수가참조형식이되도록제네릭형식매개변수를제약하거나
Class 문(Visual Basic)을정의합니다.
 
Custom
처리기추가, 처리기제거및이벤트발생을위해특수화된추가코드가이벤트에포함되어있음을나타냅니다.
 
Default
속성을해당클래스, 구조체또는인터페이스의기본속성으로식별합니다.

클래스, 구조체또는인터페이스는해당속성중하나만기본속성으로지정할수있습니다. 이때해당속성은매개변수를하나이상사용해야합니다.
코드에서멤버를지정하지않고클래스나구조체를참조하면 Visual Basic에서해당참조는기본속성으로확인됩니다.

기본속성을지정하면소스코드의문자수는좀줄어들수있지만읽기어려운코드가될수있습니다. 호출하는코드에서사용자의클래스나구조체를잘모르는데클래스나구조체이름을참조하는경우해당참조가클래스나구조체자체를참조하는지, 아니면기본속성을참조하는지확실히알수없습니다. 이로인해컴파일러오류나미묘한런타임논리오류가발생할수있습니다.

Option Strict 문을사용하여컴파일러형식검사를항상 On으로설정하면기본속성오류가발생할가능성을어느정도줄일수있습니다.

미리정의된클래스나구조체를코드에서사용하려면해당클래스나구조체에기본속성이있는지확인하고, 있으면그이름을알아두어야합니다.

이러한단점이있으므로기본속성은정의하지않는것이좋습니다. 또한코드가독성을위해서는기본속성까지포함하여모든속성을항상명시적으로참조해야합니다.

Default 한정자는다음컨텍스트에서사용할수있습니다.
 
DirectCast
상속또는구현을기반으로형식변환작업을소개합니다.

DirectCast는변환을위해 Visual Basic 런타임도우미루틴을사용하지않기때문에 Object 데이터
형식변환에있어서 CType보다나은성능을제공할수있습니다.

CType 함수및 TryCast 키워드를사용할때와같은방법으로 DirectCast 키워드를사용합니다. 첫번째인수로식을제공하고두번째인수로식을변환할형식을제공합니다. DirectCast를사용하려면두인수의데이터형식간에상속또는구현관계가있어야합니다. 즉, 한형식이다른형식에서상속되거나다른형식을구현해야합니다.
 
Each
For Each루프에사용할루프변수를지정합니다.
 
Else
다른조건문그룹이실행되거나컴파일되지않을경우에실행하거나컴파일할문그룹을정의합니다.
 
ElseIf

이전의조건테스트가실패한경우테스트할조건을정의합니다.
 
End
추가키워드가이어질경우해당키워드로시작된문블록의정의를종료합니다.
End AddHandler
End Class 
End Enum 
End Event 
End Function 
End Get 
End If 
End Interface 
End Module 
End Namespace 
End Operator 
End Property 
End RaiseEvent
End RemoveHandler
End Select 
End Set 
End Structure 
End Sub
End SyncLock
End Try
End While
End With
 
Error
런타임오류를시뮬레이트하거나이오류에응답합니다.
 
False
조건테스트에실패하는 Boolean 값을나타냅니다.
 
Finally
Try구조체를끝내기전에실행할문블록을정의합니다.
 
For
루프변수의서로다른값으로반복되는루프를정의합니다.
 
Friend
하나이상의선언된프로그래밍요소를해당선언이포함된어셈블리안에서만액세스할수있도록지정합니다.
 
Global
네임스페이스구조를사용하여차단한 .NET Framework 프로그래밍요소에액세스할수있습니다.
 
Handles

프로시저가지정된이벤트를처리하도록선언합니다.
 
Implements
클래스또는구조체멤버가인터페이스에정의된멤버에대한구현을제공하는것을나타냅니다.
 
In
For Each루프에서이동하는루프변수의그룹을지정합니다.
 
Is
비교를수행하는 Is 절을정의합니다.
 
Lib
외부프로시저를포함하는외부파일(DLL 또는코드리소스)을식별하는 Lib 절을지정합니다.
Loop Do문으로정의된루프를종료합니다.
Me 코드에서현재실행하고있는클래스또는구조체의특정인스턴스를참조할수있도록합니다.
 Module 소스파일의시작부분에있는특성이현재어셈블리모듈에적용되도록지정합니다.
 MustInherit 클래스를기본클래스로만사용할수있으며이클래스에서개체를직접만들수없도록지정합니다.
 
MustOverride
속성이나프로시저를이클래스에서구현하지않고파생클래스에서재정의해야사용할수있도록지정합니다.
 
MyBase
현재클래스인스턴스의기본클래스를참조할수있는방법을제공합니다.
  MyClass 현재클래스인스턴스멤버를파생클래스에서재정의하지않고참조할수있는방법을제공합니다.
 
Narrowing
변환연산자(CType)가클래스나구조체를원래클래스나구조체에사용하던일부값을저장하지못할수도있는형식으로변환하도록지정합니다.
 New New절을정의하여새개체인스턴스를만들거나, 형식매개변수에대한생성자제약조건을지정합니다.
 Next 다양한루프변수값을사용하여반복되는루프를종료하거나오류를발생시킨문다음의문을사용하여실행이계속되도록지정합니다.
  Nothing 모든데이터형식의기본값을나타냅니다.

변수에 Nothing을할당하면선언된형식에대한기본값을설정합니다. 해당형식이변수멤버를포함하면변수멤버도모두기본값으로설정합니다. 다음은이에대한예입니다.

Nothing을개체변수에할당하면개체변수가더이상개체인스턴스를참조하지않습니다. 변수가이전에인스턴스를참조한경우 Nothing으로설정하면인스턴스자체는종료되지않습니다. GC(가비지수집기)가남아있는활성참조가없음을발견한후에만인스턴스가종료되고인스턴스와관련된메모리및시스템리소스가해제됩니다.
 
NotInheritable
클래스를기본클래스로사용할수없도록지정합니다.
 
NotOverridable
파생클래스에서속성이나프로시저를재정의할수없도록지정합니다.
  Of 제네릭클래스, 구조체, 인터페이스, 대리자또는프로시저에서형식매개변수를식별하는 Of 절을정의합니다. 제네릭형식에대한자세한내용은 Visual Basic의제네릭형식을참조하십시오.
Off 컴파일러옵션을끕니다.
On 런타임오류에대한응답을지정하거나컴파일옵션을설정합니다.
Option 전체소스파일에적용되는컴파일러옵션을지정하는문을정의합니다.
Optional 프로시저를호출할때프로시저인수를생략할수있도록지정합니다.
 
Overloads
속성또는프로시저에서하나이상의기존속성이나프로시저를같은이름으로다시선언하도록지정합니다.
 
Overridable
속성이나프로시저가파생클래스에서같은이름의속성또는프로시저에의해재정의될수있다는것을지정합니다.
 
Overrides
속성이나프로시저에서기본클래스로부터상속된동일한이름의속성이나프로시저를재정의하도록지정합니다.
  ParamArray 프로시저매개변수가지정한형식의선택적요소배열임을지정합니다. ParamArray는매개변수목록의마지막매개변수에만사용할수있습니다.
 
Partial
클래스또는구조체선언이클래스또는구조체의부분정의임을나타냅니다.
 
Preserve
배열의차원을변경할때배열의내용이삭제되지않도록합니다.
 
Private
하나이상의선언된프로그래밍요소를포함된모든형식을비롯하여해당선언컨텍스트에서만액세스할수있도록지정합니다.
 
Protected
하나이상의선언된프로그래밍요소를고유한클래스나파생클래스에서만액세스할수있도록지정합니다.
 
Public
제한사항에액세스할수없는하나이상의선언된프로그래밍요소를지정합니다.
 
RaiseEvent
런타임시이벤트를발생시키거나이벤트를발생시킬때실행할코드를선언합니다.
 
ReadOnly
변수나속성을읽을수는있지만쓸수는없도록지정합니다.
 
Resume
오류처리후실행작업을다시진행할위치를지정합니다.
 
Shadows
선언된프로그래밍요소가기본클래스에서같은이름의요소나오버로드된요소집합을다시선언하고숨기도록지정합니다.
 
Shared
선언된프로그래밍요소하나이상이클래스나구조체의특정인스턴스가아니라해당클래스나구조체전체에연결되도록지정합니다.
 
Static
하나이상의선언된지역변수는해당변수가선언된프로시저가끝난후에도계속존재하고최신값을그대로유지하도록지정합니다.
 
Step
루프카운터의증가값을지정합니다.
 
Structure
전달된형식인수가값형식이되도록제네릭형식매개변수를제약하거나 Structure 문을정의합니다.
 
Text
같은텍스트문자가동일하게정렬되도록문자열비교메서드를설정합니다.
 
Then
테스트한조건이 True일경우컴파일하거나실행할문블록을소개합니다.
 
To
루프카운터나값일치범위의시작값과끝값을구분합니다.
 
True
조건테스트를전달하는 Boolean 값을나타냅니다.
 
TryCast
예외를 throw하지않는형식변환연산을정의합니다.

변환이실패하면 CTypeDirectCast 모두 InvalidCastException 오류를 throw합니다. 이로인해응용프로그램의성능이저하될수있습니다. TryCast는 Nothing(Visual Basic)을반환하므로, 발생가능한예외를처리할필요는없고반환된결과를 Nothing
대해테스트하기만하면됩니다.

CType 함수와 DirectCast 키워드를사용할때와같은방법으로 TryCast 키워드를사용합니다. 식을첫째인수로지정하고
변환할형식을둘째인수로지정합니다. TryCast는클래스와인터페이스같은참조형식에만작동합니다. 이키워드를사용하려면두형식사이에상속또는구현관계가있어야합니다. 즉, 한형식이다른형식에서상속되거나구현된경우라야합니다.
 
Unicode
Visual Basic에서선언되는외부프로시저의이름에관계없이모든문자열을유니코드값으로마샬링하도록지정합니다.

프로젝트외부에정의된프로시저를호출할때 Visual Basic 컴파일러에서는프로시저를정확히호출하는데필요한정보에액세스할수없습니다.
이정보에는프로시저위치, 프로시저식별방법, 프로시저호출시퀀스및반환형식, 프로시저에사용되는문자열문자집합등이포함됩니다.
Declare 문은외부프로시저에대한참조를만들고이러한필수정보를제공합니다.

Declare 문의charsetmodifier부분은외부프로시저를호출하는중문자열을마샬링하는작업과관련된문자집합정보를제공할뿐만아니라 Visual Basic이외부파일에서외부프로시저이름을검색하는방식에영향을줍니다. Unicode 한정자는 Visual Basic에서모든문자열을유니코드값으로마샬링하고검색중에이름을수정하지않고프로시저를조회하도록지정합니다.

문자집합한정자가지정되어있지않으면 Ansi가기본값입니다.
 
Until
Do루프의실행을종료하는조건을지정합니다.
 
When
Catch문에조건테스트를추가합니다.
 
While
Do루프의실행이계속될수있는조건을지정합니다.
 
Widening
변환연산자(CType)가클래스나구조체를원래클래스나구조체의모든가능한값을보유할수있는형식으로변환함을나타냅니다.
 
WithEvents
하나이상의선언된멤버변수가이벤트를발생시킬수있는클래스인스턴스를참조하도록지정합니다.
 
WriteOnly
속성을쓸수는있지만읽을수는없도록지정합니다.


행복한고수되세요.

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형
아~~ 드뎌 3번째 입니다. 일단의 마의 3 번째를 넘었는데... 내용이 너무 허접하여 계속 이끌어갈수 있을지... ^^;;;
하이간 한번 끝까지 해볼랍니다. ^^
 
오늘은 XML Parsing에 대해 알아보도록 할까요?
Parsing이라 함은 간단히 Reading이라고 생각하시면 될 듯 합니다.
하지만 단순한 죽죽 읽어 내려가는 작업이 아닌 문서내에서 어떤 특정 데이터값을 찾는 다거나 특정 값과 관련된 일정 범위의 값들을 필터링하는 작업을 할수도 있고 XML 문서의 원하는 node를 찾아 내고 특정 element의 attribute 의 값을 찾아내는 일련을 작업을 말합니다.
그 밖에 Node type으로 리스트를 만들 수 있습니다.
Node를 Sort 할 수 있습니다.
XML Source 내에 있는 chile element들의 리스트를 만들 수 있습니다.
관련된 Node를 찾을 수 있습니다.
 
Parsing이 어떤 작업인지는 어련풋이 감을 잡으셨으리라 생각합니다.
 
그러면 XML Parsing Model에 대해서 알아볼까요?
크게 두가지 모델이 있다고 합니다.
그 것은 Push model과 Pull model 입니다.
Push model은 말 그대로 XML parsing 을 담당하는 객체가 데이터를 application에게 밀어 넣어주는 개념이라고 보시면 되고 이 모델은 SAX에서 사용하고 있습니다.
Pull model은 .NET Framework XML Reader가 채택하고 있는 모델로 application이Parsing 객체에 접근하여 데이터를 당겨오는 방식이라고 생각하시면 됩니다.
 
Push model은 xml data를 요청하는 application에게 filtering없이 처음부터 끝까지 주~~욱 데이터를 밀어 넣어 줍니다. 그래서 만약에 중간에 xml 파일이 well form이 아니거나 하면 걍 확 작업을 멈춰버리죠. 그래서 프로그래밍 시에 언제, 어떤 에러가 발생할지 모르니까 다양한 상황에 따른 error 처리를 해주어야 할 것입니다.
.NET에서는 SAX를 지원하지 않습니다.
하지만 .NET Based program에서 MSXML Parser 를 사용하는 방법으로 SAX방식을 구현할 수 는 있겠죠…
 
pull model같은 경우는 전에 말한 바와 같이 application이 parser에게 특정 node를 저정해주면 parser 는 xml source에서 그 node의 데이터만 가져오고 application은 그 가져온 데이터를 당겨 (pull) 옵니다.
.NET Framework 의 XmlReader class는 한번에 하나의 node만 읽습니다. 그리고 읽은 후에는 application에 읽었다는 notification은 날릴 뿐입니다.(야~~ 나 읽었어..라고요..^^)
만약에 xmlreader가 error를 만나면 야도 SAX와 같이 error를 발생시킵니다.
근데 SAX랑 약간 다른 점이 있다면 error를 만나도 하던 작업을 계속 진행합니다.
그게 다른 점이죠…
 
 
XmlReader에는 두가지 장점이 있는데 그 중하나는 coding이 쉽다는 점입니다.
우리가 datareader 객체의 read 함수를 사용해서 Looping 을 돌려 데이터를 가죠오듯이 쉽게 데이터를 가져올 수 있습니다.
Push model에서는 state 를 handle하는 routine리라는 걸 사용한다고 하네요…
글구 그런 routine을 사용하는 것보다 훨씬 쉽다고 합니다.(SAX를 사용해 보질 않아서.. ^^;)
글구 두번째는 XmlReader는 SAX보다는 적은 memory를 사용하기 때문에 수행면에서 더낫다는 것입니다.
그리고 전에도 이야기 했듯이. SAX는 내가 원하는 데이터를 찾기 위해서는 첫줄부터 마지막줄까지 일일이 한줄한줄 찾아 내려갑니다.
내가 원하는 데이터를 만날때까지.
그러나 Pulll model을 사용하는 XmlReader의 경우는 원하지 않는 element는 걍 넘어가 버리죠..
그러니 SAX보다는 빠르겠죠…
 
요약하면 이렇습니다.
상태관리(state management)면에서 push model의 경우는 context handler를 요구하지만
pull model 의 client는 상태관리가 단순하다고 하네요..(이 부분은 공부가 더 필요할 듯…ㅡㅡ;)
multiple input streams: pull model은 client가 파서에게 일을 준다고 해도 SAX보다는 덜 무리가 가겠죠..
 push model의 경우는 일을 받으면 데이터를 주~~욱 끝까지 읽으며 데이터를 가져와야지..
그리고 그 가져온걸 요청한 녀석에게 또 다 뿌려줘야지.. 할일이 억쓰로 많을 것입니다.
 
데이터를 가져오는 효율성을 보면 push model은 데이터를 두번 쓴다고 합니다.
Parser는 Xml 문서로부터 읽은 string 객체를 자신의 buffer에 한번 쓰고 다시 그걸 client의 buffer에 밀어 넣어 써주어야 한다고 하네요..
그래서 두번 쓴다고 합니다.
Pull model은 자신의 buffer에만 쓰면 되죠.. 그리고 client에게 notification만 날린다고 했죠. (야~ 다 읽었어! 라고.. ^^)
Push model은 원하는 데이터를 찾을 때 한줄 한줄 다 읽어 내려간다고 했죠. 각 item을 비롯해서 각 element 의 name, attribute 의 이름, 값, 공백까지..
다 읽어 내려간다고 합니다. 그러나 pull model 의 경우는 원하는 item 이 아닌 경우는 걍 skip 하고 뛰어 넘어 갈 수 있습니다. 그러니 push model 경우보다는 빠를 수 있다는 야그죠.
SAX가 Pull model 보다 나은 점에 대해서 예전에 들었었는데 기억이 가물가물해서 모르겠네요..
아시는 분께서는 알려주세요… ^^
그럼 다음 시간에는 XmlReader를 이용한 Parsing을 시작으로 Xml Parsing에 대해서 한번 주~욱 알아보죠…
 
긴 글 읽어 주셔서 감사합니다.
 
한주가 다시 시작됐습니다.
 
부디 행복한 한주 되시고
고수되십시요...
 
woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
작심삼일은 넘었으나.. 다시 작심삼일이 되지 않도록 기도해주세요... ^^;(작심삼일 되기전에 다시 마음을 먹었거든요..ㅋㅋㅋ)

반응형

'XML' 카테고리의 다른 글

[XML] AutomationML  (0) 2017.04.05
[XML] XML ??? ... (2)  (0) 2009.03.05
[XML] XML ??? ... (1)  (0) 2009.03.05

저번시간에 이어 오늘도 좀 나아가 볼랍니다.
밤에 집에 와서 이렇게 멀 잡고 한다는게 힘드네요...
그래도 작심삼일이 되지 않게 하기 위해서... ^^;
 
이번에는 .NET Framework이 제공하는 XML 관련 class들과 W3C 규격의 XML 을 비교해 볼까요?
W3C XML Standard
NET Framework
namespace
.NET Framework
Class
XML 1.0 and Namespace in XML
System.Xml
 
XPath
System.Xml
System.Xml.XPath
XPath
XSLT
System.Xml.Xsl
XmlTransform
DOM Level1/Level2 Core
System.Xml
XmlDocument
XML Schemas
System.Xml
System.Xml.Schemas
XmlSchema
 
XML Schema Object Model(SOM)
System.Xml.Schemas
XmlSchema
 
그럼 .NET Framework의 XML Class들을 살펴보겠습니다.
Abstract base class
Use
Derived classes
XmlReader
Streaming model과 함께 사용하여 Xml 문서를 읽을 때 forword-only, read-only cursor로 접근하며 합니다. 그리고 schema, DTD, XDR, XSD에 대한 유효성을 검사할 때 사용합니다.
XmlTextReader
XmlNodeReader
XmlValidatingReader
XmlWriter
XML 문서를 만들 때 사용합니다.
XmlTextWriter
XmlNavigator
XML 문서를 검색할 때 사용합니다.
XmlPathNavigator
XmlResolver
URI 로 명명된 외부 XML Resource를 바꾸는데(resolve) 사용합니다.
XmlUrlResolver
 
이런 것들이 있다고 합니다.
그리고 위의 class들은 차츰 진행해 나가면서 언급되고 코딩을 통해서 쓰임새를 알아보도록 하겠습니다.(ㅡㅡ; 코드 만드는게 잴루다 문제일 것 같습니다.)
 
여러분도 잘 아시다시피 MS에서는 XML을 작업하기 위한 두가지 방법을 제공하고 있습니다.
지금 다루고 있는 .NET Framework의 XML class 이고요 다른 하나는 MSXML 이라는 녀석입니다.
MSXML 은 현재 버전이 4.0이고요, 이녀석에 대해서는 더 깊게는 다루지 않을 것입니다.
단지 두 녀석을 비교만 해보죠.
 
 
MSXML
.NET Framework Classes
Usage
COM 환경
.NET Managed 환경
XML 1.0 and
XML Namespace


XPath


XSLT


DOM Level1


DOM Level2 Core
 

XML Schemas


SOM
★(readonly)

SAX

 
 
이 정도의 차이가 있죠.
쓰임의 환경이 다르다는 가장 큰 차이가 있겠죠.
 
이정도로 할까요? 다음 글부터는 이제 실제 class를 들어 Pasing과 writing에 들어가 보도록 하겠습니다.
 
woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
허접하고 말주변이 없어...죄송합니다. ^^
반응형

'XML' 카테고리의 다른 글

[XML] AutomationML  (0) 2017.04.05
[XML] XML ??? ... (3)  (0) 2009.03.05
[XML] XML ??? ... (1)  (0) 2009.03.05

+ Recent posts