Transcript xmlWriter

선문 비트 교육 센터
고급 과정 18기
유영성

XML 소개

Xmlwriter Class 소개

실습

EXtensible Markup Language의 약자로
HTML과 같은 Markup Language이다.
 Markup이란 문서 처리를 지원하기 위해 문서에 추가되
는 정보를 말한다.


XML을 통하여 개발자는 매우 다양한 응용
프로그램으로부터 구조화된 데이터를 사용
할 수 있다.
XML은 데이터를 저장과 전송을 위해 고안
되었다.

XML은 웹 개발시 간단한 데이터 저장과 공
유에 자주 사용된다.

XML 구조는 뿌리(root)에서 시작해서 나뭇
가지에 붙어있는 낙옆까지 완벽한 나무 모
양의 형태를 갖추고 있다. (트리구조)
부모노드
학생
기본정보
이름
나이
추가정보
성별
이메일
차일드노드
주소
차일드노드

XML 선언
 XML 문서가 정보를 처리할 때 처리지시문
(PI:Processing Instruction)을 사용할 수 있는데 정
보를 어떻게 처리할 것인지를 알려주기 위해 사
용한다.
 선언은 반드시<?xml로 시작하고 끝은?>으로 닫
아준다.

주석사용(XML 문서를 설명하기 위해 사용)
 형태=> <!-- 주석내용 -->

요소(Element)
 요소는 요소의 시작태그에서 끝맺음 태그까지
의 모든 것을 말한다.

속성(attribute)
 속성은 요소에 추가 정보를 제공한다.
첫번째 예제는 속성을 이용한 예제이다
두번째 예제는 요소를 이용한 예제이다.
두 예제의 결과값은 같다.
하지만 속성을 사용하는 것 보다 요소를
사용해서 XML문서를 작성하는 것이 더 좋
다. 속성을 사용시 발생하는 몇몇 문제점
들이 있다.속성은 다중값을 가질 수 없고
트리 구조를 만들지 못한다. 그리고 확장
성이 떨어진다.

엔티티 레퍼런스(Entity Reference)
 XML 구성요소안에서 “<”와 같은 문자를 사용한
다면, 에러가 발생할 것이다. 왜냐하면 파서는
꺽쇠를 새로운 구성요소의 시작으로 해석하기
때문이다.
에러발생
추가적인 엔티티 레
퍼런스는 MSDN참고
엔티티 레퍼런스 사용으로 해결

XML 스키마란?
 XML 스키마는 XML 기반의 DTD대안이다.
▪ DTD란 (Data Type Definition:문서형태정의)문서를 구성하는 정보요소, 정보요소의 구조와 특
성 등 문서의 형태를 구조화하여 정의 한 것을 말한다.
 다양한 데이터를 표현하고, XML문서의 구조를
정의하는 문서 모델의 한 종류이다.
 다양한 예약어와 제어구조를 가지고 있다.
 xsd확장자 명을 사용한다
XML 문서 구조를 다음과 같이 정의 할 수 있다.
다음과 같이 XML문서를 사용 할 수 있다
참고사이트
http://tequiero35.egloos.com/category/%5BP%5D%20XML
System.object
System.Xml.XmlWriter
XmlWriter는 XmlTextWriter
클래스에서 구현된다.
System.Xml.XmlTextWriter


XmlWriter클래스는 추상클래스로 빠르고 캐시되
지 않은 XML 데이터를 스트림 혹은 파일 형태로
제공한다.
XmlTextWriter클래스는 XmlWriter를 구현하고 전
방으로 XML데이터를 빠르게 액세스하는 기능을
제공한다.

XmlTextWriter는 3개의 생성자를 가지고있다.
 첫번째로 데이터를 스트림 입력을 받아들이는
경우
두번째 파라미터는 XML 결과
물의 인코딩에 관한것이다.
Null값을 주면 기본적으로 인
코딩 타입은UTF-8이 된다.
 두번째로 스트림 대신에 파일 이름 문자열을 생
성자에 넘겨주는 경우
Xml 문서를 작성할 경로를 지정한다

XmlTextWriter 객체의 메소드들을 호출하여
각각의 Xml노드 타입들인 element, attribute,
text, processing instruction등의 데이터를 쓸
수 있다.

일반적으로 2개의 호출을 이용하여 시작 요
소(start element)와 끝(end element)요소 태
그를 쓴다.
WriteStartElement()함수의 매개변수로 해당
요소명을 적어주면 된다.
여기서 WriteEndElement()함수와
WriteStartElement()함수가 매치되는걸 알 수
있다. Open된 모든 요소들이 close되지 않고
XmlTextWrite의 Close()함수를 호출하면 에러
가 발생된다.

XmlTextWriter 객체는 사용의 편리성을 위한 helper 메소드들을 제공
하는 이 메소드들은 요소를 쓰기 위해 WriteStartElement() 여러 번 호
출을 할 필요가 없고 한번의WriteElementString() 호출로 요소의 Text내
용을 쓸 수 있다.
출력결과

XML 문서의 text 내용 쓰는 메소드는 여러가지가
있는데 그중에서 가장 많이 사용하는 메소드는 문
자열을 매개변수로 받는 WriteString()함수가 있다.
출력결과

Char 타입의 배열로 Text를 쓰려면 WriteChar() 메
소드로 XML 문서에 데이터를 보내면 된다.
출력결과

주석은 WriteComment() 메소드로 XML 문서
에 쓸 수 있다.
출력 결과

Process Instruction을 XML 문서에 쓰는 메소
드인 WriteProcessingInstruction()을 사용한
다.
출력결과

Entity Reference는 WriteEntityRef() 메소드
가 사용된다. 매개변수로 entity의 name을
쓰게된다.

속성에는 Text, entity reference 등의 데이터
들이 다 들어갈 수 있으므로, 여러 개의 메소
드들의 호출로 속성값을 만들 수 있다.
네임스페이스 정보를 넘겨준다.
Null값을 넘겨주면 기본 네임스페이스를
사용한다
출력결과

속성에 단순히 문자열의 값을 넣으려면
WriteAttributeString() 메소드 한번의 호출
로 속성값을 추가할 수 있다.
출력결과

XmlWriter 클래스는 네임스페이스에 대한
모든 사항들을 지원한다.
출력결과

XmlTextWriter에서 포맷팅을 가능하게 하기 위해서는 Formatting 속성
을 설정하면 된다. 속성값은 Indented나 None의 두 가지 값 중 하나가
된다. Indented가 되게 되면 XML문서의 결과물에 공백 문자를 추가시
켜 보기 좋게 만들어 준다.
사용후
사용전
과일가게
과일
이름
가격
고급반
XmlWriter 클래스를 이용하
여 XML 문서를 작성하라.
학생
기본정보
이름








나이
추가정보
성별
이메일
주소
PI(Processing Instruction) 사용
포맷팅값 4로 설정
루트 요소명 - 학생정보
학생 정보 내 요소 - 학생
학생 내 요소 - 기본정보,추가정보
기본정보 내 요소 - 이름,나이,성별
추가정보 내 요소 - 이메일,주소
실습시간 10분