XML Parsing

Ajisai·2023년 7월 27일
0

Java

목록 보기
17/17

공공데이터의 형식

CSV; Comma-Seperated Value

  • 구조적이지 못 함
  • 용량은 작음

XML; eXtensible Markup Language

  • 구조적임
  • 태그 등 문법을 알아야 됨
  • 태그에 의해 용량이 커짐

JSON; JavaScript Object Notation

  • JavaScript에서 객체를 표현하는 방법
  • JSON을 많이 쓰지만 가끔 XML만 가능한 경우도 있음

XML

Vs. HTML

  • 필요에 따라 태그를 확장할 수 있음(extensible)
  • Well formed: 문법을 정확히 지켜야 동작함
    HTML은 사실 대충 써도 그림은 띄워짐

기본 문법

  • 문서의 시작은 반드시<?xml version="1.0" encoding="UTF-8"?>와 같이 버전과 encoding이 명시되어야 한다.
  • root element가 존재해야 하며, 나머지 태그는 tree 형태로 구성된다.
  • 시작 태그와 종료 태그는 일치해야 한다.
  • 시작 태그는 key-value 구조로 속성을 가진다: attr="value"
  • 태그는 대소문자를 구별한다.
<?xml version="1.0" encoding="UTF-8"?>
<ssafy>
  <student no="12345">
    <name>홍길동</name>
  </student>
</ssafy>

validity

  • valid하다 = 최초 작성자의 의도대로 작성되었다
  • 문서의 구조, 적절한 요소, 속성 개수, 순서가 잘 지켜졌는가?
  • DTD나 Schema로 문서의 규칙을 작성하고, 이 규칙을 잘 따라 XML 문서가 valid하다고 할 수 있다.
  • 데이터 송신, 수신 측에서는 DTD, Schema로 data validation 수행한다.

DTD; Data Type Definition

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT ssafy(student*)>
<!ATTLIST studnet no CDATA "0">
<!ELEMENT student (name, loc, phone?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT loc (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
  • <!ELEMENT ssafy(student*)>: root element
  • student*
    wildcard: 여러 개
  • CDATA
    Character DATA
  • phone?
    wildcard: 있어도 되고 없어도 되고(optional)
  • #PCDATA
    • Parsed Char DATA: XML 문서가 parsing해서 쓰는 CDATA
    • 즉 CDATA에는 "12<45" 해도 되지만 PCDATA에서는 <를 태그의 기호로 인식하게 된다.

XML parsing

  • SAX parser
    • Simple API for XML parser
    • XML 문서를 메모리에 적재하지 않는다.
    • 문서를 읽으면서 시작 태그, 종료 태그를 이벤트로 간주해 처리한다.
    • 그래서 빠르다.
    • 그래서 다양한 탐색이 어렵다.
  • DOM parser
    • Document Object Model parser
    • XML 문서를 메모리에 적재한다.
    • 문서를 다 읽은 후 문서 구조 전체를 자료구조에 저장해 탐색한다.
    • 그래서 느리다(큰 문서 처리는 어려움).
    • 그래서 다양한 탐색에 좋다.

SAX parser

events

  • startDocument()
  • startElement()
  • characters()
  • endElement()
  • endDocument()
profile
Java를 하고 싶었지만 JavaScript를 하게 된 사람

0개의 댓글

관련 채용 정보