sub_title
 ASP.NET
제   목 닷넷에서 XML 다루기
작성자 아침마당 등록일 2010-06-07 01:14:93 조회수 5,655
첨부화일 movies.xml   

1. 닷넷은 XML 기반

모든 닷넷 기술은 XML을 기반으로 하고 있다고 해도 지나치지 않을 정도로 XML은 닷넷의 핵심 기술이다. 닷넷 어플리케이션 간에 데이터를 교환하는 표준 형식으로 사용하는 것은 물론 실행환경을 설정하는 구성 파일에서도 XML 파일을 사용한다.

웹 프로젝트에서 사용하고 있는 환경 구성 파일(web.config)도 XML 문서로 되어 있다. XML 파일에 자식 요소를 추가하거나 속성을 바꾸어서 실행 환경을 변경한다.

2. XML DOM

XML DOM에서 XML 문서를 다루는 기본 기능을 제공하는 것이 XmlNode 객체이다. XmlNode 객체는 XML 트리에서 하나의 요소를 나타내며, 노드 이동은 물론 데이터 편집 및 삭제 기능도 제공한다.

다음은 XmlNode 객체의 속성들이다.


* 요소 : 요소(element)란 태그를 열고 닫는 곳까지와 그 사이에 있는 내용을 포함해서 부르는 용어이다.

* 다음에 설명할 내용에 대한 예제 파일은 첨부파일로 첨부하였다.(첨부파일 이름 : movies.xml)

3. XML 데이터 읽기

XmlDocument 객체는 XML 문서를 나타낸다. XML 파일로부터 XML 내용을 읽어오려면 다음과 같이 Load 메서드를 부른다.

XmlDocument doc = new XmlDocument();

doc.Load(Server.MapPath(“movies.xml”));

다음은 XML 데이터 읽은 후 Dataset에 넣고 화면에 표시하는 예이다.

4. XML 데이터 쓰기

XmlDocument 객체는 XML 문서를 생성하고, 수정할 수 있는 메서드를 제공한다.

다음은 XML 문서를 다루는 XmlDocument 객체의 메서드이다. 자식 노드를 추가하거나, 이미 존재하는 노드를 지울 때 사용하는 메서드이다.


5. DOM을 이용한 데이터 필터링

데이터베이스에서 Select 문을 사용하여 데이터를 읽어 오고, Where 조건절을 이용하여 조건에 맞는 데이터만 필터링해서 데이터를 읽어 오듯이 XML 문서에서도 데이터 필터링 기능을 이용할 수 있다.

다음은 XML DOM 객체를 이용하여 rating 노드만 읽어 온 예이다.

XmlNodeList list = doc.SelectNodes(“movies/movie/rating”);

SelectNodes 메서드에 넘겨주는 표현식은 XML 문서의 전체 트리 구조를 알고 있어야 만들 수 있다.

루트 노드를 기준으로 레벨을 바꾸면서 하위 노드로 이동할 수 있다. 하위 노드를 지정하는 것은 디렉토리에서 하위 디렉토리를 지정하는 것과 비슷하다. 하위 노드를 지정할 때는 ‘/’를 사용한다.

다음은 예문과 그것을 실행한 결과 값이다.

예문)


실행결과)

전체 관람가
15세 관람가
12세 관람가

6. 조건 필터링

조건에 맞는 데이터만 선택해서 읽어 오는 경우에는 SelectNodes 메서드를 호출할 때 조건을 지정해야 한다.

다음은 movies.xml 에서 movie 노드에 있는 genre 속성을 검사해서 ACTION 인 값을 가지 노드를 찾고, 그 자식 노드인 title 노드를 가져오는 예제이다.

예문)

실행 결과)

로빈후드
페르시아의 왕자

필터링한 결과가 하나의 단일 노드라면 SelectSingleNode 메서드를 이용할 수 있다. 리턴 값은 XmlNode 객체를 리턴한다.

XmlNode node = doc.SelectSingleNode(“movies/movie[@no=’2’]/title”);


 

 
1
    
 
0
        list
 
※ 짧은 댓글일수록 예의를 갖추어 작성해 주시기 바랍니다.
line
reply cancel
 
번호 제목 글쓴이 추천 조회 날짜
29  ASP.NET에서 Gridview 내용을 Excel로 export하기   member 아침마당 2 / 0 9969 2010-11-01
28  ASP.NET에서 메일 보내기   member 아침마당 0 / 0 5635 2010-10-26
27  문자열 변수 = 문자열 변수 + 정수형 변수   member 아침마당 0 / 0 3311 2010-10-21
26  출력 매개변수를 갖는 저장 프로시저 ASP.NET에서 사용하기   member 아침마당 0 / 0 8151 2010-10-04
25  ASP.NET에서 저장 프로시저 사용하기   member 아침마당 2 / 0 9813 2010-09-30
24  저장 프로시저 만들기   member 아침마당 1 / 0 4787 2010-09-28
23  Visual Studio 2010 단축키 요약 파일 첨부파일   member 아침마당 0 / 0 5081 2010-09-07
22  ASP.NET에서 예외 처리에 대해서   member 아침마당 0 / 0 4580 2010-08-29
21  답변형 게시판 예제 파일   member 아침마당 1 / 0 3260 2010-08-22
20  리스트 컨트롤과 컬렉션에 대해서   member 아침마당 1 / 0 6119 2010-08-17
19  데이터 바인딩과 배열에 대해서   member 아침마당 0 / 0 3931 2010-08-16
18  Gridview control에 TemplateField를 사용하는 이유   member 아침마당 1 / 1 4363 2010-08-12
17  C#의 제어문   member 아침마당 0 / 0 5010 2010-08-04
16  Windows SharePoint Services 3.0 도구에 대하여   member 아침마당 0 / 0 3329 2010-07-17
15  C#의 기본 규칙   member 아침마당 0 / 0 3682 2010-07-09
14  닷넷에서 DataSet 다루기   member 아침마당 0 / 0 24579 2010-06-21
13  ASP.NET에서 TextBox에 onfocus, onblur 이벤트 적용 예   member 아침마당 0 / 0 5414 2010-06-15
12  ASP.NET에서 TextBox 엔터키 적용과 주민 번호 검증 예   member 아침마당 0 / 0 5530 2010-06-15
11  ASP.NET 정수<-->문자열 형변환, 메시지출력, switch문 사용 예   member 아침마당 0 / 0 8063 2010-06-15
10  닷넷에서 XML 다루기 이미지 첨부파일   member 아침마당 1 / 0 5655 2010-06-07
9  데이터 그리드 안에 있는 컨트롤 이벤트 만들기   member 깐소금 0 / 0 5405 2007-11-18
8  로딩페이지 구현하기   member 깐소금 0 / 0 7008 2007-11-18
7  CDO객체를 이용하여 야후 smtp로 메일 보내기   member 먹깨비 0 / 0 4971 2007-11-15
6  C# 버블소트 알고리즘   member 웹스톤 0 / 0 4464 2007-11-14
5  @OutputCache 디렉티브를 사용한 페이지 성능 향상   member 먹깨비 0 / 0 6511 2007-09-17
write
[2] button