StAX 파서-개요
StAX는 SAX 파서와 유사한 방식으로 XML 문서를 구문 분석하는 JAVA 기반 API입니다. 그러나 두 API 사이에는 두 가지 주요 차이점이 있습니다.
StAX는 PULL API 인 반면 SAX는 PUSH API입니다. StAX 파서의 경우 클라이언트 응용 프로그램은 필요할 때마다 XML에서 정보를 가져 오도록 StAX 파서에게 요청해야하지만 SAX 파서의 경우 SAX 파서가 클라이언트 응용 프로그램에 정보를 알릴 때 클라이언트 응용 프로그램이 정보를 가져와야합니다. 사용할 수 있습니다.
StAX API는 XML 문서를 읽고 쓸 수 있습니다. SAX API를 사용하여 xml은 읽기만 가능합니다.
다음은 StAX API의 기능입니다-
올바른 형식의 XML 문서를 구성하는 토큰을 인식하여 위에서 아래로 XML 문서를 읽습니다.
토큰은 문서에 표시된 것과 동일한 순서로 처리됩니다.
구문 분석기가 발생했을 때 발견 한 토큰의 특성에 대해 애플리케이션 프로그램을보고합니다.
응용 프로그램은 반복자 역할을하고 필요한 정보를 얻기 위해 이벤트를 반복하는 "이벤트"판독기를 제공합니다. 사용 가능한 또 다른 판독기는 xml 노드에 대한 포인터 역할을하는 "커서"판독기입니다.
이벤트가 식별되면 xml 요소를 이벤트 개체에서 검색하고 추가로 처리 할 수 있습니다.
언제 사용합니까?
다음과 같은 경우 StAX 파서를 사용해야합니다.
XML 문서를 위에서 아래로 선형 방식으로 처리 할 수 있습니다.
문서가 깊게 중첩되지 않았습니다.
DOM 트리가 너무 많은 메모리를 사용하는 매우 큰 XML 문서를 처리하고 있습니다. 일반적인 DOM 구현은 10 바이트의 메모리를 사용하여 1 바이트의 XML을 나타냅니다.
해결해야 할 문제는 XML 문서의 일부에만 관련됩니다.
데이터는 파서가 보는 즉시 사용할 수 있으므로 StAX는 스트림을 통해 도착하는 XML 문서에 적합합니다.
SAX의 단점
XML 문서는 순방향 전용 방식으로 처리되기 때문에 임의의 액세스 권한이 없습니다.
파서가 본 데이터를 추적하거나 항목의 순서를 변경해야하는 경우 코드를 작성하고 데이터를 직접 저장해야합니다.
XMLEventReader 클래스
이 클래스는 XML 문서를 구문 분석하는 동안 발생하는 이벤트를 반복하는 데 사용할 수있는 이벤트의 반복자를 제공합니다.
StartElement asStartElement() − 요소의 값과 속성을 검색하는 데 사용됩니다.
EndElement asEndElement() − 요소의 끝에서 호출됩니다.
Characters asCharacters() − CDATA, 공백 등의 문자를 얻는 데 사용할 수 있습니다.
XMLEventWriter 클래스
이 인터페이스는 이벤트 생성 방법을 지정합니다.
add(Event event) − XML에 요소가 포함 된 이벤트를 추가합니다.
XMLStreamReader 클래스
이 클래스는 XML 문서를 구문 분석하는 동안 발생하는 이벤트를 반복하는 데 사용할 수있는 이벤트의 반복자를 제공합니다.
int next() − 다음 이벤트 검색에 사용됩니다.
boolean hasNext() − 추가 이벤트 존재 여부 확인에 사용
String getText() − 요소의 텍스트를 가져 오는 데 사용
String getLocalName() − 요소의 이름을 얻는 데 사용
XMLStreamWriter 클래스
이 인터페이스는 이벤트 생성 방법을 지정합니다.
writeStartElement(String localName) − 주어진 이름의 시작 요소를 추가합니다.
writeEndElement(String localName) − 주어진 이름의 끝 요소를 추가합니다.
writeAttribute(String localName, String value) − 요소에 속성을 씁니다.