[XML] XML 의 기초

2008. 1. 3. 16:28

출처 : 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의 기초를 이해하는데에는 무리가 없을 것 같습니다.

Posted by 나비:D
:
BLOG main image
by 나비:D

공지사항

카테고리

분류 전체보기 (278)
Programming? (0)
---------------------------.. (0)
나비의삽질 (5)
Application (177)
SQL (51)
Web (27)
etc. (14)
Omnia (0)
---------------------------.. (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

달력

«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Total :
Today : Yesterday :