출처 : http://cafe.naver.com/physicalcomputing.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=35
이번주에는 플랙스의 MXML의 형제격인 XML(eXtensible Mark Language)의 기초에 대해 알아봅시다.
XML이 DOM(Dzcument Object Model-HTML, XML, MXML, MSXML 등등)구조언어 중에서 제일 쉽기 때문입니다.
<XML의 기본적인 설명>
- XML은 확장자가 XML이다.
- XML은 메모장등 문서편집기에서 작성하면 된다.
- XML은 태그로 만든다.
- XML은 정해진 태그들이 없다.(HTML의 <b>, <font>등과 같은 정해진 규칙들은 없다.)
- XML은 대소문자를 구분한다.
1.노드
- 노드(node)란 html의 태그의 개념입니다. <사람>은 XML에서 사람태크라고 하지 않고 사람노드라고 부릅니다.
- <사람>이라는 시작노드로 시작했다면</사람>이라는 끝노드로 끝납니다.
- XML의 문서의 최상위 노드는 하나만 존재합니다.
<사람>
</사람>
이것은 정상입니다.
<사람>
</사람>
<동물>
</동물>
하지만 이것은 최상위 노드가 두개(사람,동물)이기 때문에 잘못된 방식입니다.
최상위 노드안에 자식 노드들이 추가가 되어야 합니다.
<사람>
<남자>
</남자>
<여자>
</여자>
</사람>
이렇게...
- 노드에는 공백이 없어야 합니다.
< 사람>
이것은 노드앞의 공백으로 인해 에러가 납니다.
2.XML의 선언부
- XML 문서작성을 시작할때는
<?xml version="1.0" encoding="EUC-KR" ?>이라는 XML언어 선언부 줄을 넣어줍니다.
3.노드의 내용과 속성
- 노드의 내용이 있을때는 끝노드와 시작노드 사이에 써주면 됩니다.
<사람>
조재현
</사람>
이렇게 써주면 사람노드의 내용은 조재현으로 가지게 됩니다.
- 노드에는 속성을 넣어 줄 수 있습니다.
<사람 이름="조재현" 나이="26">
</사람>
이렇게 써주면 사람노드는 이름과 나이라는 속성을 가지게 됩니다.
4.플래시에서 XML의 다루기
<?xml versinon="1.0" encoding="EUC-KR" ?>
<홍익대학교>
<디미디>
<조재현 나이="26" 키="174"></조재현>
<김기환 나이="27" 키="177"></김기환>
</디미디>
<프디>
<김학병 나이="26" 키="180"></김학병>
<김준영>당구장죽돌이</김준영>
</프디>
</홍익대학교>
다음과 같은 hongik.xml 문서를 플래시에서는 어떻게 다룰수 있을까요.
먼저 플래시에서 myXML이라는 XML객체를 만듭니다.-> var myXML:XML = new XML();
myXML에 load메써드로 hongik.xml문서를 로드합니다. -> myXML.load("hongik.xml);
xml문서의 공백을 없애줍니다. -> myXML.ignoreWhite = true;
xml문서의 공백이란, <홍익대학교>이것은공백이것은공백이것은공백이것은공백이것은공백
</홍익대학교>이것은공백이것은공백이것은공백이것은공백이것은공백
노드들 사이에 빈칸을 얘기다. 이부분을 없애줌으로서 에러가 나지 않게 합니다.
xml이 로드되었을때 일어날 이벤트를 써줍니다.->myXML.onLoad = function(){스크립트기술};
이제 플래시에서 hongik.xml을 다룰 수 있게 되었는데 각정보에 대한 접근법을 알아봅시다.
먼저 최상위 노드인 <홍익대학교>는 myXML.firstChild; 입니다.
<홍익대학교>노드의 첫번째 노드인<디미디>는 myXML.firstChild.firstChild; 입니다. 그렇다면<프디>
는? myXML.firstChile.firstChild.nextSibling 입니다. 같은 레벨의 노드는 nextSibling으로 표현합니다.
따라서 <김기환>은 myXML.firstChild.firstChild.firstChild.nextSibling; 이 됩니다.
<김기환>의 속성인 나이의 값을 얻고 싶다면 myXML.firstChild.firstChild.firstChild.nextSibling.attributes.나이; 이렇게 attributes를 써서 알 수 있습니다. 속성은 attributes를 사용하고 내용은 nodeValue명령을 씁니다.
<김준영>의 내용인 "당구장죽돌이"라는 텍스트는myXML.firstChild.firstChild.nextSibling.firstChild.nextSibling.nodeValue; 이 되겠습니다. 이쯤되면 노드가 무한정 많으면 어떻하나? 라는 의문이 들텐데... 그럴땐 nextSibling대신 childNodes 명령을 씁니다.
이것은 배열로 저장이 되는데요 예를들어 <프디>노드는 myXML.firstChild.childNodes[1] 로 표현합니다. <디미디>는 myXML.firstChild.childNodes[0] 이 되겠지요.
이상으로 플래시에서 XML을 다루는 법을 보았습니다.
그렇다면 왜 xml을 굳이 쓸까요. 플래시나 플렉스에서 이런 변수들을 그냥 만들어 두면 안될까요?
5. XML문서를 쓰면 좋은점
- 먼저 XML문서는 외부파일이기 때문에 필요한 정보를 추가하거나 변경 할때는 xml문서만 어디서든(pc이라든지)
수정하면 됩니다. 플래시프로그램이나 플렉스빌더 같은 프로그램이 필요가 없지요.
따라서 xml문서에 따라 유동적으로 다이나믹하게 구조를 만들 수 있습니다.
- 부모자식간의 명확한 객체모델이므로 정보의 구조화가 쉽습니다.
이상으로 생각나는대로 써보았는데요... 부족한 점은 많지만 xml의 기초를 이해하는데에는 무리가 없을 것 같습니다.