본문 바로가기

JS

XML파일과 JSON파일

XML (eXtensible Markup Language)

<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

 

장점
  • 유연성 : 복잡한 데이터 구조와 다양한 데이터 타입을 표현하는데 유리함
  • 스키마 검증 : DTD(Document Type Definition)와 XSD(XML Schema)를 통해 데이터의 정확성과 일관성을 보장할 수 있음
  • 메타데이터 포함 : 태그와 속성을 통해 풍부한 메타데이터를 포함할 수 있음
  • 표준화 : 다양한 산업 표준 준수 및 문서형식으로 많이 사용됨
단점
  • 무거움 : 태그 기반 형식으로 인해 데이터 양이 많아질 수 있음
  • 복잡성 : 구조가 복잡함
  • 유지보수 : 문서를 작성하고 유지보수하는데 더 많은 노력 필요
  • 속도 : 파싱 속도가 상대적으로 느릴 수 있음

 

XML 형식 검증 방식

 

특정한 규칙을 준수하면 well-formed XML로 간주

 

  1. Well-Formedness Check (형식 준수 검증)
    • XML 문서가 XML 규격을 따르고 있는지 확인
    • 시작 태그와 종료 태그가 일치해야 하며, 태그는 올바르게 중첩되어야 함
    • 단일 루트 요소를 가져야 함
    • 특수 문자는 적절히 이스케이프 되어야함
  2. DTD (Document Type Definition)
    • XML 문서의 구조와 요소 및 속성의 관계를 정의하는데 사용됨
    • XML 문서가 DTD에 정의된 구조를 따르는지 검증
      <!DOCTYPE note [
        <!ELEMENT note (to,from,heading,body)>
        <!ELEMENT to (#PCDATA)>
        <!ELEMENT from (#PCDATA)>
        <!ELEMENT heading (#PCDATA)>
        <!ELEMENT body (#PCDATA)>
      ]>
       
  3. XSD (XML Schema)
    • DTD보다 더 강력하고 유연한 방식으로 XML 문서 검증
    • 요소와 속성의 데이터 타입, 기본값, 고유성 등의 조건을 정의
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="note">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="to" type="xs:string"/>
        <xs:element name="from" type="xs:string"/>
        <xs:element name="heading" type="xs:string"/>
        <xs:element name="body" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

 


JSON (JavaScript Object Notation)

{
  "note": {
    "to": "Tove",
    "from": "Jani",
    "heading": "Reminder",
    "body": "Don't forget me this weekend!"
  }
}

 

장점
  • 간결함 : 더 적은 양의 데이터를 사용하여 표현 가능, 읽기 쉽고 쓰기 쉬움
  • 네이티브 JavaScript 지원 : JavaScript에서 JSON은 네이티브 데이터 형식으로 웹개발에 용이
  • 속도 : 파싱과 생성 속도가 빠름
  • 가벼움 : XML에 비해 오버헤드가 적어 네트워크 전송 효율이 좋음
단점
  • 제한된 데이터 타입 : 문자열, 숫자, 배열, 객체, bool, null 등의 기본 타입만 지원
  • 스키마 검증의 제한 : JSON 스키마를 통해 데이터 구조를 검증할 수 있지만, XML Schema에 비해 덜 강력함
  • 메타데이터 부족 : XML처럼 태그 기반의 풍부한 메타데이터 표현이 어려움

 

공통점

  • 두 형식 모두 데이터의 구조화된 표현을 위해 사용
  • 데이터 교환을 위해 사용
  • 다양한 프로그래밍 언어에서 파싱 및 생성 라이브러리를 지원

'JS' 카테고리의 다른 글

Jest를 통해 unit테스트 진행하기  (1) 2024.07.24
타입스크립트 컴파일 with readline  (2) 2024.07.23
[Node.js] Process 노드 모듈  (0) 2024.07.19
[Node.js] 메모리 관리  (0) 2024.07.18
readline을 통해 입력받기  (0) 2024.07.15