XML / JSON

유영·2023년 3월 6일
0

ajax

목록 보기
2/2

[xml(EXtensible Markup Language)]

HTML 과 매우 비슷한 문자 기반의 마크업 언어로, 데이터들 저장하고 전달할 목적으로 만들어진 언어이다.
1998년 W3C 표준 권고안에 포함되었다. 웹브라우저 간 html 문법이 호환되지 않는 문제와
SGML의 복잡함을 해결하기 위해서 개발된 마크업 언어이다.

XML은 데이터를 저장하고 전달할 목적으로 만들어졌으며, 저장되는 데이터의 구조를 기술하기 위한 언어입니다.
XML은 eXtensible Markup Language의 약자로,
수많은 응용 분야에서 데이터를 저장하고 전달하는 중요한 역할을 맡고 있습니다.

[특징]

  1. XML은 다른 목적의 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어입니다.
  2. XML은 다른 시스템끼리 다양한 종류의 데이터를 손쉽게 교환할 수 있도록 해줍니다.
  3. XML은 새로운 태그를 만들어 추가해도 계속해서 동작하므로, 확장성이 좋습니다.
  4. XML은 데이터를 보여주지 않고, 데이터를 전달하고 저장하는 것만을 목적으로 합니다.
  5. XML은 텍스트 데이터 형식의 언어로 모든 XML 문서는 유니코드 문자로만 이루어집니다.

XML은 문서용 마크업 언어를 정의하기 위한 메타언어인 SGML(Standard Generalized Markup Language)을 기반으로 만들어졌습니다.

[XML 기반의 언어]

XML을 기반으로 하는 대표적인 언어는 다음과 같습니다.

  1. XHTML
  2. SVG
  3. RDF
  4. RSS
  5. Atom
  6. MathML

XML 문서의 구성 요소

DTD에서는 모든 XML 문서가 다음과 같은 구성 요소로 이루어져 있다고 봅니다.

  1. 요소(elements)
  2. 속성(attributes)
  3. 엔티티(entities)
  4. PCDATA
  5. CDATA
//문법
<?xml version="1.0" encoding="UTF-8" ?>
<태그이름  속성="" 속성=""></태그이름>

<?xml version="1.0" encoding="UTF-8" ?>
<shop city="서울" type="마트">
    <food>
         <name></name>
         <sort>과일</sort>
         <cost>1000</cost>
    </food>
    <food>
         <name>상추</name>
         <sort>야채</sort>
         <cost>2000</cost>
    </food>
</shop>

1.요소(elements)

DTD에서 요소(element)란 XML 문서를 구성하는 가장 중요한 구성 요소입니다.

<!ELEMENT 요소이름 요소카테고리>
또는
<!ELEMENT 요소이름 (요소내용)>

2. 속성(attributes)

DTD에서 속성은 요소에 대한 추가적인 정보를 제공하며, 해당 요소의 특징을 정의합니다.

<!ATTLIST 요소이름 속성이름 속성타입 속성값>

엔티티(entities)

XML에서는 예약되어 있는 다섯 개의 특별한 기호가 있습니다.
이렇게 예약되어 있는 기호를 XML 문서에서 사용하면 XML 파서는 그것을 전혀 다른 의미로 해석합니다. 따라서 이렇게 예약된 기호를 기존에 사용하던 의미 그대로 사용하기 위해서 만든 문자셋을 엔티티(entity)라고 합니다.

<!ENTITY 엔티티이름 "엔티티값">

또한, 문서 외부에 존재하는 외부 엔티티는 다음과 같이 SYSTEM 키워드를 사용하여 선언할 수 있습니다.

<!ENTITY 엔티티이름 SYSTEM "URI또는URL">

PCDATA

PCDATA(Parsed Character DATA)란
XML 파서에 의해 분석될 문자 데이터를 의미합니다.

간단히 말해 XML 요소의 시작 태그와 종료 태그 사이에 위치한 텍스트를 PCDATA라고 생각하면 됩니다.
PCDATA는 XML 파서가 엔티티(entity)와 마크업(markup)으로 나누어 분석합니다.
이렇게 XML 파서에 의해 분석될 문자 데이터만을 가지는 요소는
요소의 내용을 #PCDATA로 명시하여 선언합니다.

<!ELEMENT 요소이름 (#PCDATA)>

CDATA

CDATA(Character DATA)란 XML 파서가 분석하지 않는 문자 데이터를 의미합니다. DTD에서 요소의 콘텐츠에는 PCDATA만이 올 수 있으며, 속성의 속성값으로는 CDATA만이 올 수 있습니다.

<!ATTLIST 요소이름 속성이름 CDATA 속성값>

[JSON(JavaSCript Object Notation)]
쉽게 데이터를 교환하고 저장하기 위하여 만들어진
텍스트 기반의 데이터 교환 표준이다.
자바스크립트 언어로부터 파생되어 자바스크립트 구문 형식을 따르지만
또다른 데이터 형식을 말한다.
특징으로는 매우 유연하게 정보를 저장, 구조화할수 있다.
속성과 값으로 이루어진 데이터 오브젝트를 전달하기 위해서 사용되는
개방형 표준 포맷이다.
AJAX에서 많이 사용되며, XML을 대체하는 데이터 포맷이다.

  1. 문자는 ""
  2. 숫자
  3. 배열 : []
  4. 객체 {}에 넣어서 사용한다.

JSON의 특징

JSON은 다음과 같은 특징을 가집니다.

  1. JSON은 자바스크립트를 확장하여 만들어졌습니다.
  2. JSON은 자바스크립트 객체 표기법을 따릅니다.
  3. JSON은 사람과 기계가 모두 읽기 편하도록 고안되었습니다.
  4. JSON은 프로그래밍 언어와 운영체제에 독립적입니다.
[{ },{ },{ }]
{
  "변수명":"데이터",
  "변수명":[
    "값1",
    "값2",
    "값3"
  ],
  "변수명":{
    "변수":데이터1,
    "변수":데이터2,
    "변수":데이터3
  }
}
1. 문자 : ""
2. 숫자
*변수이름 한글 안됨,영문자로 시작한다

{
  "변수명":"데이터",
  "배열명":[
      "값1",
      "값2",
      "값3"
   ],
   "다중배열?":{
      "변수":"데이터",
      "변수":"데이터",
      "변수":"데이터"
   }
}
{
     "이름":"홍길동",
     "나이":25,
     "성별":"남",
     "특기":["무술","활쏘기"],
     "가족관계":{"어머니":"월매","아버지":"홍검사"}
}
이름을 찾으면 홍길동이 나오고
나이는 25
특기는 배열로 반환이 된다.
특기[0] = 무술
특기[1] = 활쏘기
가족관계는
가족관계의 아버지 는 홍검사
가족관계의 어머니 는 월매

* 주의 사항 : 한글 변수는 사용할수 없음... 영문자로 시작되어야함
 예제)
{
  "name":"여자친구",
  "members":[
      "소원",
      "예린",
      "은하",
      "유주",
      "신비",
      "엄지"
   ],
   "albums":{
      "s1집":"season of glass",
      "s2집":"flower bud",
      "s3집":"snowflake"
   }
}

JSON과 XML의 공통점

  1. 둘 다 데이터를 저장하고 전달하기 위해 고안되었습니다.
  2. 둘 다 기계뿐만 아니라 사람도 쉽게 읽을 수 있습니다.
  3. 둘 다 계층적인 데이터 구조를 가집니다.
  4. 둘 다 다양한 프로그래밍 언어에 의해 파싱될 수 있습니다.
  5. 둘 다 XMLHttpRequest 객체를 이용하여 서버로부터 데이터를 전송받을 수 있습니다.

JSON과 XML의 차이점

  1. JSON은 종료 태그를 사용하지 않습니다.
  2. JSON의 구문이 XML의 구문보다 더 짧습니다.
  3. JSON 데이터가 XML 데이터보다 더 빨리 읽고 쓸 수 있습니다.
  4. XML은 배열을 사용할 수 없지만, JSON은 배열을 사용할 수 있습니다.
  5. XML은 XML 파서로 파싱되며, JSON은 자바스크립트 표준 함수인 eval() 함수로 파싱됩니다.

0개의 댓글