Download - LINQ to XML

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


Top Related