XML 이란 무엇인가?

XML은 EXtensible Markup Language의 약자이며 HTML과 매우 비슷한 문자 기반의 마크업 언어(text-based markup language) 이다.

이 언어는 사람과 기계가 동시에 읽기 편한 구조로 되어 있다.

그러나 XML은 HTML처럼 데이터를 보여주는 목적이 아닌, 데이터를 저장하고 전달할 목적으로만 만들어졌다.

또한, XML 태그는 HTML 태그처럼 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있습니다.


# XML 주요 특징

1. XML은 다른 목적의 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어이다.

2. XML은 다른 시스템끼리 다양한 종류의 데이터를 손쉽게 교환할 수 있도록 도와준다.

3. XML은 새로운 태그를 만들어 추가해도 계속해서 동작하므로, 확장성이 좋다.

4. XML은 데이터를 보여주지 않고, 데이터를 전달하고 저장하는 것만을 목적으로 한다.

5. XML은 텍스트 데이터 형식의 언어로 모든 XML 문서는 유니코드 문자로만 이루어진다.


그외에도


XML태그명과 변수명이 동일해야지 된다.


자바 파싱(자바에서 XML의 데이터를 읽어온다)

= DOM (데이터베이스 대체) : 수정, 추가, 삭제, 검색

= SAX : 검색

= JAXB : 자바클래스와 XML을 연결 (빅데이터, 외부 XML을 읽을 경우)


# XML을 저장하는 방식

<태그>데이터 저장</태그>

<태그 속성="데이터저장" />



# HTML과 다른점

1) 문법이 어렵다.

2) HTML은 화면 출력하는 목적, 문서 저장 목적 (파일형 데이터베이스)

3) 태그나 속성에서 대소문을 구분한다.

4) 속성에 값을 대입할 때 반드시 ""(큰따옴표)를 사용한다.

5) 여는태그 닫는 태그는 반드시 일치해야 한다.

6) Spring, Mybatis => XML기반이다.


# 장점

1) 호환성이 좋다(스마트폰, 리눅스, 윈도우) => 운영체제에 상관없이 사용이 가능하다.


# 단점

1) XML코드가 길어지면 속도가 늦어진다 (분산처리) : 여러개를 나눠서 처리

Spring, Mybatis : 업체마다 XML코드가 다르기 때문에 제공하는 XML만 사용해야 한다.(XML 태그를 외워야 한다.) => DTD파일을 제공 (태그가 정의되어있는 문서)


# XML을 주로 사용하는 부분

= Ajax => javascript and XML

= javascript 5 => javascript 6(XML)

= React / VueJS

= AI => 데이터 수집 (XML)

= Kotlin => XML 기반



사용자 정의 태그를 만든다. <태그명>:사용자 정의


#  문법


- 알파벳, 한글로 시작한다. (알파벳: 대소문자구분)

    <a>!=<A>


- 숫자를 사용할 수 있다. (앞에 사용금지)

    <2a> (X) => <a2> <a3> ...


- 태그에 공백이 있으면 안된다.

    < abc> (X)  <file name> (X)


- 특수문자 사용이 가능 ( _ , - , . )

    <file_name> <file-name> <file.name>


- 키워드는 사용할 수 없다 => <xml>


- HTML 태그는 사용이 가능 (문서로 저장)


- 여는 태그와 닫는 태그가 반드시 일치

<a><b><c></c></b></a> : 계층구조가 있어야 완성된다.


# 태그의 종류 

여는태그 : <table> <a>

닫는태그: </table> </a>

빈태그 : <br/> <img/>



# XML태그는 반드시 최상위 태그가 존재

    ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

    <a></a>    (O)

    ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

    <a></a>

    <b></b>       (X)

    ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

    <a>

        <b></b>        (O)

    </a>

    ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


- 권장사항

    알아보기 쉬운 태그명을 사용한다(시멘틱 태그)

    <a>홍길동</a>   (X)

    <name>홍길동</name>   (O)




댓글