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()] [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 트리로 바로 불러오기) XML 파일 불러오기2(XMLReader) 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 트리에서 프로젝션하고 XML 트리를 변환하는 일반적인 예제를 제공합니다. 고급 쿼리 기법(LINQ to XML) 고급 시나리오에 유용한 쿼리 기법을 제공합니다. XPath 사용자에 대한 LINQ to XML 다양한 XPath 식과 각 XPath 식에 해당하는 동일한 LINQ to XML 항목을 제공합니다. XML의 순수 함수 변환 함수형 프로그래밍의 스타일로 쿼리를 작성하는 방법에 대한 간단한 자습서를 제공합니다.
Reference 1. MSDN 2.www.ehclub.net
Thank You