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분