linq to xml

21
LINQ to XML 정정정정 정정정 2003730080 정정정

Upload: amena

Post on 19-Mar-2016

111 views

Category:

Documents


9 download

DESCRIPTION

LINQ to XML. 정보통신 공학부 2003730080 어현승. Contents. 1. LINQ? 2.LINQtoXML 3.Methods 4. Coding. LinQ. LINQ(.NET Language Integrated Query) 프로젝트는 데이터 소스 뿐만 아니라 개발을 위한 데이터 접근을 표준화하려는 MS 의 이니셔티브이다 . LINQ 의 장점 1. 관계형 데이터베이스 테이블 뿐만 아니라 텍스트 파일 , XML 파일 , 그리고 동일한 구문을 사용하는 데이터 소스에 질의를 할 수 있다 . - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: LINQ to XML

LINQ to XML

정보통신 공학부2003730080

어현승

Page 2: LINQ to XML

Contents

• 1. LINQ?• 2.LINQtoXML• 3.Methods• 4. Coding

Page 3: LINQ to XML

LinQ

• LINQ(.NET Language Integrated Query) 프로젝트는 데이터 소스 뿐만 아니라 개발을 위한 데이터 접근을 표준화하려는 MS 의 이니셔티브이다 .

• LINQ 의 장점• 1. 관계형 데이터베이스 테이블 뿐만 아니라 텍스트 파일 , XML

파일 , 그리고 동일한 구문을 사용하는 데이터 소스에 질의를 할 수 있다 .

• 2.C#, VB.NET 등 임의의 .NET 호환 언어로 이 표준화된 방식을 사용할 수 있다는 점이다 .

• Object,Dataset,SQL, Entities, XML 에 대하여 지원하며 object, RDB,XML 이 3 가지에 대해 컨트롤이 가능하다 .

Page 4: LINQ to XML

LINQ to XML

• LINQ to XML 은 LINQ 를 사용할 수 있는 메모리 내 XML 프로그래밍 인터페이스로 , .NET Framework 프로그래밍 언어에서 XML 작업을 수행할 수 있도록 합니다 .

• LINQ to XML 의 가장 큰 이점– XML 트리를 쉽게 만들 수 있습니다 .– XML 문서에 대한 쿼리를 작성하여 요소와 특성에 대해서 검색이 가능합니다 .– XElement 및 XAttribute 개체 생성자에 대한 매개 변수로 사용할 수 있습니다 .– ‘ 함수 생성’ 이란 방법을 통해 XML 의 트리 구조를 변경 할 수 있습니다 .

Page 5: LINQ to XML

Query 문

데이터 소스 및 범위변수

필터링 할 조건 ( 해당 조건이 참인 요소를 가지고 온다 , &&,|| 연산자를 사용 가능 )

지정한 키에 따라 결과를 그룹화

값을 정렬 하기 위한 기준

결과값을 가지고 온다 .

Page 6: LINQ to XML

LINQ-XML VS DOM• DOM 방식은 XML 트리의 구조에 대한 많은 정보를 시각적으로

제공하지 않습니다 .

Page 7: LINQ to XML

LINQ to XML Query 사용법항목 설명

방법: 특정 특성을 가진 요소 찾기 특정 값을 가진 특성이 포함된 특정 요소를 찾는 방법을 보여 줍니다 .

방법: 특정 자식 요소를 가진 요소 찾기 특정 값을 가진 자식 요소가 포함된 특정 요소를 찾는 방법을 보여 줍니다 .

XDocument 쿼리와 XElement 쿼리 비교 XElement에서 시작하는 XML 트리에 대한 쿼리 작성과 XDocument에서 시작하는 XML 트리에 대한 쿼리 작성의 차이점에 대해 설명합니다 .

방법: 특정 요소 이름을 가진 하위 요소 찾기 특정 이름을 가진 요소의 하위 요소를 모두 찾는 방법을 보여 줍니다 . 이 예제에서는 Descendants 축을 사용합니다 .

방법: Descendants 메서드를 사용하여 단일 하위 요소 찾기 Descendants 축 메서드를 사용하여 고유하게 명명된 단일 요소를 찾는 방법을 보여 줍니다 .

방법: 복잡한 필터링을 사용하여 쿼리 작성 더욱 복잡한 필터를 사용하여 쿼리를 작성하는 방법을 보여 줍니다 .

방법: 선택적 요소를 기준으로 필터링 불규칙적인 모양의 트리에서 노드를 찾는 방법을 보여 줍니다 .

방법: 네임스페이스에서 모든 노드 찾기 특정 네임스페이스에 있는 노드를 모두 찾는 방법을 보여 줍니다 .

방법: 요소 정렬 결과를 정렬하는 쿼리를 작성하는 방법을 보여 줍니다 .

방법: 여러 키에 대해 요소 정렬 여러 키에 대해 정렬하는 방법을 보여 줍니다 .

방법: 중간 값 계산 Let 절을 사용하여 LINQ to XML 쿼리에서 중간 값을 계산하는 방법을 보여 줍니다 .

방법: 컨텍스트에 따라 요소를 찾는 쿼리 작성 트리의 다른 요소를 기반으로 요소를 선택하는 방법을 보여 줍니다 .

방법: 빈 쿼리 결과 집합 디버깅 기본 네임스페이스에 있는 XML 에 대한 쿼리를 디버깅할 때 적절한 해결 방법을 보여 줍니다 .

Page 8: LINQ to XML

XML Tree 에 추가 하기 ( 생성자를 통한 추가 )

Page 9: LINQ to XML

함수에 Element 추가하기 (Add 함수 )

Page 10: LINQ to XML

함수에 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 부모 요소에서 소스 컬렉션의 모든 특성이나 요소를 제거합니다 .

Page 11: LINQ to XML

함수에 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 자식 노드를 새 내용으로 바꿉니다 .

Page 12: LINQ to XML

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( 저장파일명 );

Page 13: LINQ to XML

NameSpace 의 범위

• 트리에 나타나는 기본 네임스페이스는 쿼리에 범위에 포함되지 않습니다 . 그렇기 때문에 기본 네임스페이스에 있는 XML 을 사용하는 경우 XNamespace 변수를 선언하고 로컬 이름과 결합하여 쿼리에서 사용할 정규화된 이름을 만들어야 합니다 .

• XML 트리를 쿼리할 때 가장 일반적인 문제 중 하나는 XML 트리에 기본 네임스페이스가 있는데도 개발자가 경우에 따라 XML 이 네임스페이스에 없는 것처럼 쿼리를 작성는 것입니다 .

Page 14: LINQ to XML

NameSpace 잘못된 사용 예제

Page 15: LINQ to XML

NameSpace 잘못된 사용의 해결책

Page 16: LINQ to XML

Xml Tree 에서 트리모양 변환

Page 17: LINQ to XML

Xml Tree 에서 트리모양 변환

Page 18: LINQ to XML

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 을 생성하는 방법을 보여 줍니다 .

Page 19: LINQ to 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 항목을 제공합니다 .

Page 20: LINQ to XML

Reference

• 1. MSDN• 2.www.ehclub.net

Page 21: LINQ to XML

Thank You