Name of presentation

Download Report

Transcript Name of presentation

LINQ to XML
정보통신 공학부
2003730080
어현승
Contents
•
•
•
•
1. LINQ?
2.LINQtoXML
3.Methods
4. Coding
LinQ
• LINQ(.NET Language Integrated Query) 프로젝트는 데이터 소스
뿐만 아니라 개발을 위한 데이터 접근을 표준화하려는 MS의
이니셔티브이다.
• LINQ의 장점
• 1.관계형 데이터베이스 테이블 뿐만 아니라 텍스트 파일, XML 파일,
그리고 동일한 구문을 사용하는 데이터 소스에 질의를 할 수 있다.
• 2.C#, VB.NET 등 임의의 .NET 호환 언어로 이 표준화된 방식을
사용할 수 있다는 점이다.
• Object,Dataset,SQL, Entities, XML 에 대하여 지원하며 object,
RDB,XML 이 3가지에 대해 컨트롤이 가능하다.
LINQ to XML
• LINQ to XML은 LINQ를 사용할 수 있는 메모리 내 XML 프로그래밍
인터페이스로, .NET Framework 프로그래밍 언어에서 XML 작업을
수행할 수 있도록 합니다.
• LINQ to XML의 가장 큰 이점
–
–
–
–
XML 트리를 쉽게 만들 수 있습니다.
XML 문서에 대한 쿼리를 작성하여 요소와 특성에 대해서 검색이 가능합니다.
XElement 및 XAttribute 개체 생성자에 대한 매개 변수로 사용할 수 있습니다.
‘함수 생성’ 이란 방법을 통해 XML의 트리 구조를 변경 할 수 있습니다.
Query 문
데이터 소스 및 범위변수
지정한 키에 따라 결과를 그룹화
필터링 할 조건(해당 조건이 참인 요소를 가지고
온다, &&,|| 연산자를 사용 가능)
결과값을 가지고 온다.
값을 정렬 하기 위한
기준
LINQ-XML VS DOM
• DOM 방식은 XML 트리의 구조에 대한 많은 정보를 시각적으로
제공하지 않습니다.
LINQ to XML Query 사용법
항목
설명
방법: 특정 특성을 가진 요소 찾기
특정 값을 가진 특성이 포함된 특정 요소를 찾는 방법을 보여 줍니다.
방법: 특정 자식 요소를 가진 요소 찾기
특정 값을 가진 자식 요소가 포함된 특정 요소를 찾는 방법을 보여 줍니다.
XDocument 쿼리와 XElement 쿼리 비교
XElement에서 시작하는 XML 트리에 대한 쿼리 작성과 XDocument에서
시작하는 XML 트리에 대한 쿼리 작성의 차이점에 대해 설명합니다.
방법: 특정 요소 이름을 가진 하위 요소 찾기
특정 이름을 가진 요소의 하위 요소를 모두 찾는 방법을 보여 줍니다. 이
예제에서는 Descendants 축을 사용합니다.
방법: Descendants 메서드를 사용하여 단일 하위 요소 찾기
Descendants 축 메서드를 사용하여 고유하게 명명된 단일 요소를 찾는
방법을 보여 줍니다.
방법: 복잡한 필터링을 사용하여 쿼리 작성
더욱 복잡한 필터를 사용하여 쿼리를 작성하는 방법을 보여 줍니다.
방법: 선택적 요소를 기준으로 필터링
불규칙적인 모양의 트리에서 노드를 찾는 방법을 보여 줍니다.
방법: 네임스페이스에서 모든 노드 찾기
특정 네임스페이스에 있는 노드를 모두 찾는 방법을 보여 줍니다.
방법: 요소 정렬
결과를 정렬하는 쿼리를 작성하는 방법을 보여 줍니다.
방법: 여러 키에 대해 요소 정렬
여러 키에 대해 정렬하는 방법을 보여 줍니다.
방법: 중간 값 계산
Let 절을 사용하여 LINQ to XML 쿼리에서 중간 값을 계산하는 방법을 보
여 줍니다.
방법: 컨텍스트에 따라 요소를 찾는 쿼리 작성
트리의 다른 요소를 기반으로 요소를 선택하는 방법을 보여 줍니다.
방법: 빈 쿼리 결과 집합 디버깅
기본 네임스페이스에 있는 XML에 대한 쿼리를 디버깅할 때 적절한 해결
방법을 보여 줍니다.
XML Tree에 추가 하기(생성자를 통한 추가)
함수에 Element 추가하기(Add함수)
함수에 Element 삭제하기
메소드
설명
[M:System.Xml.Linq.XAttribute.Remove()]
부모에서 XAttribute를 제거합니다.
[M:System.Xml.Linq.XContainer.RemoveNodes()]
XContainer에서 자식 노드를 제거합니다.
XElement..::.RemoveAll
XElement에서 내용과 특성을 제거합니다.
XElement..::.RemoveAttributes
XElement의 특성을 제거합니다.
XElement..::.SetAttributeValue
값으로 null을 전달하면 특성을 제거합니다.
XElement..::.SetElementValue
값으로 null을 전달하면 자식 요소를 제거합니다.
XNode..::.Remove
부모에서 XNode를 제거합니다.
Extensions..::.Remove
부모 요소에서 소스 컬렉션의 모든 특성이나 요소를
제거합니다.
함수에 Element 수정하기
메소드
설명
XElement..::.Parse
요소를 구문 분석된 XML로 바꿉니다.
XElement..::.RemoveAll
요소의 모든 내용(자식 노드와 특성)을 제거합니다.
XElement..::.RemoveAttributes
요소의 특성을 제거합니다.
XElement..::.ReplaceAll
요소의 모든 내용(자식 노드와 특성)을 바꿉니다.
XElement..::.ReplaceAttributes
요소의 특성을 바꿉니다.
XElement..::.SetAttributeValue
특성의 값을 설정합니다. 특성이 없으면 특성을 만듭니
다. 값이 null로 설정되어 있으면 특성을 제거합니다.
XElement..::.SetElementValue
자식 요소의 값을 설정합니다. 요소가 없으면 요소를 만
듭니다. 값이 null로 설정되어 있으면 요소를 제거합니다.
XElement..::.Value
요소의 내용(자식 노드)을 지정된 텍스트로 바꿉니다.
XElement..::.SetValue
요소의 값을 설정합니다.
XAttribute..::.Value
특성의 값을 설정합니다.
XAttribute..::.SetValue
특성의 값을 설정합니다.
XNode..::.ReplaceWith
노드를 새 내용으로 바꿉니다.
XContainer..::.ReplaceNodes
자식 노드를 새 내용으로 바꿉니다.
XML 파일 불러오기 /저장하기
•
XML 파일 불러오기(XML 트리로 바로 불러오기)
•
XElement 변수명 = XElement.Load(파일의 경로);
• XML 파일 불러오기2(XMLReader)
– XmlReader 불러들일 변수명 = XmlReader.Create(읽을 파일명");
– while (불러들일 변수명.NodeType != XmlNodeType.Element) r.Read();
– XElement e = XElement.Load(r);
• XML 파일로 저장 하기
– ….. e.Save(저장파일명);
NameSpace의 범위
• 트리에 나타나는 기본 네임스페이스는 쿼리에 범위에 포함되지
않습니다. 그렇기 때문에 기본 네임스페이스에 있는 XML을 사용하는
경우 XNamespace 변수를 선언하고 로컬 이름과 결합하여 쿼리에서
사용할 정규화된 이름을 만들어야 합니다.
• XML 트리를 쿼리할 때 가장 일반적인 문제 중 하나는 XML 트리에
기본 네임스페이스가 있는데도 개발자가 경우에 따라 XML이
네임스페이스에 없는 것처럼 쿼리를 작성는 것입니다.
NameSpace 잘못된 사용 예제
NameSpace 잘못된 사용의 해결책
Xml Tree에서 트리모양 변환
Xml Tree에서 트리모양 변환
Xml Tree 를 다른 형태로 변환
메소드
설명
방법: LINQ to XML을 사용하여 사전 작업
사전을 XML로 변환하는 방법과 XML을 사전으
로 변환하는 방법을 보여 줍니다.
방법: XML 트리의 모양 변환
XML 문서의 모양을 변환하는 방법을 보여 줍니
다.
방법: 프로젝션 형식 제어
LINQ to XML 쿼리의 형식을 제어하는 방법을
보여 줍니다.
방법: 새 형식 프로젝션(LINQ to XML)
LINQ to XML 쿼리에서 사용자 정의 형식의 컬
렉션을 프로젝션하는 방법을 보여 줍니다.
방법: 개체 그래프 프로젝션
LINQ to XML 쿼리에서 더 복잡한 개체 그래프
를 프로젝션하는 방법을 보여 줍니다.
방법: 익명 형식 프로젝션
LINQ to XML 쿼리에서 익명 개체의 컬렉션을
프로젝션하는 방법을 보여 줍니다.
방법: XML에서 텍스트 파일 생성
XML 파일을 XML이 아닌 텍스트 파일로 변환하
는 방법을 보여 줍니다.
방법: CSV 파일에서 XML 생성
LINQ를 사용하여 CSV 파일의 구문을 분석하고
이 파일에서 XML을 생성하는 방법을 보여 줍니
다.
XML Tree를 이용한 고급기법
항목
설명
기본 쿼리(LINQ to XML)
XML 트리를 쿼리하는 일반적인 예제를 제공합니다.
프로젝션 및 변환(LINQ to XML)
XML 트리에서 프로젝션하고 XML 트리를 변환하는 일반
적인 예제를 제공합니다.
고급 쿼리 기법(LINQ to XML)
고급 시나리오에 유용한 쿼리 기법을 제공합니다.
XPath 사용자에 대한 LINQ to XML
다양한 XPath 식과 각 XPath 식에 해당하는 동일한 LINQ
to XML 항목을 제공합니다.
XML의 순수 함수 변환
함수형 프로그래밍의 스타일로 쿼리를 작성하는 방법에
대한 간단한 자습서를 제공합니다.
기본 쿼리(LINQ to XML)
XML 트리를 쿼리하는 일반적인 예제를 제공합니다.
프로젝션 및 변환(LINQ to XML)
XML 트리에서 프로젝션하고 XML 트리를 변환하는 일반
적인 예제를 제공합니다.
고급 쿼리 기법(LINQ to XML)
고급 시나리오에 유용한 쿼리 기법을 제공합니다.
XPath 사용자에 대한 LINQ to XML
다양한 XPath 식과 각 XPath 식에 해당하는 동일한 LINQ
to XML 항목을 제공합니다.
Reference
• 1. MSDN
• 2.www.ehclub.net
Thank You