ADO.NET DataSet 데이터의 관계형 표현을 제공합니다. 계층적 데이터 액세스의 경우 .NET Framework에서 사용할 수 있는 XML 클래스를 사용할 수 있습니다. 지금까지 이러한 두 가지 데이터 표현은 별도로 사용되었습니다. 그러나 .NET Framework를 사용하면 DataSet 개체와 XmlDataDocument 개체를 통해 데이터의 관계형 및 계층적 표현 모두에 대한 실시간 동기식 액세스를 사용할 수 있습니다.
DataSet이 XmlDataDocument와 동기화되면 두 개체 모두 단일 데이터 집합으로 작업합니다. 즉, DataSet이 변경되면 변경 내용이 XmlDataDocument에 반영되고 그 반대의 경우도 마찬가지입니다. DataSet과 XmlDataDocument 간의 관계는 단일 데이터 집합을 사용하여 단일 애플리케이션이 DataSet(예: Web Forms 및 Windows Forms 컨트롤, Visual Studio .NET 디자이너)을 중심으로 빌드된 전체 서비스 제품군뿐만 아니라 XSL(Extensible Stylesheet Language)을 비롯한 XML 서비스 제품군에 액세스할 수 있도록 함으로써 뛰어난 유연성을 제공합니다. XSL 변환(XSLT) 및 XPath(XML 경로 언어). 애플리케이션을 대상으로 지정할 서비스 집합을 선택할 필요가 없습니다. 둘 다 사용할 수 있습니다.
여러 가지 방법으로 DataSet 을 XmlDataDocument와 동기화할 수 있습니다. 다음을 할 수 있습니다:
데이터 세트를 스키마(즉, 관계형 구조) 및 데이터로 채웁니다. 그런 다음 새 XmlDataDocument와 동기화합니다. 기존 관계형 데이터에 대한 계층적 보기를 제공합니다. 다음은 그 예입니다.
Dim dataSet As DataSet = New DataSet ' Add code here to populate the DataSet with schema and data. Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet)
DataSet dataSet = new DataSet(); // Add code here to populate the DataSet with schema and data. XmlDataDocument xmlDoc = new XmlDataDocument(dataSet);
데이터 세트를 스키마로만 채우고(예: 강력한 형식의 DataSet) XmlDataDocument와 동기화한 다음 XML 문서에서 XmlDataDocument를 로드합니다. 기존 계층적 데이터에 대한 관계형 보기를 제공합니다. DataSet 스키마의 테이블 이름과 열 이름은 동기화할 XML 요소의 이름과 일치해야 합니다. 이 일치는 대/소문자를 구분합니다.
데이터 세트의 스키마는 관계형 보기에 노출하려는 XML 요소와만 일치해야 합니다. 이렇게 하면 매우 큰 XML 문서와 해당 문서에 매우 작은 관계형 "창"이 있을 수 있습니다. XmlDataDocument는 데이터 세트가 작은 부분만 노출하더라도 전체 XML 문서를 유지합니다. 자세한 예제는 DataSet과 XmlDataDocument 동기화를 참조하세요.
다음 코드 예제에서는 DataSet 을 만들고 해당 스키마를 채웁니다. 그런 다음 XmlDataDocument와 동기화하는 단계를 보여 줍니다. DataSet 스키마는 DataSet을 사용하여 노출하려는 XmlDataDocument의 요소와만 일치해야 합니다.
Dim dataSet As DataSet = New DataSet ' Add code here to populate the DataSet with schema, but not data. Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet) xmlDoc.Load("XMLDocument.xml")
DataSet dataSet = new DataSet(); // Add code here to populate the DataSet with schema, but not data. XmlDataDocument xmlDoc = new XmlDataDocument(dataSet); xmlDoc.Load("XMLDocument.xml");
XmlDataDocument가 데이터가 포함된 DataSet과 동기화된 경우에는 로드할 수 없습니다. 예외가 발생합니다.
새 XmlDataDocument를 만들고 XML 문서에서 로드한 다음 XmlDataDocument의 DataSet 속성을 사용하여 데이터의 관계형 뷰에 액세스합니다. DataSet을 사용하여 XmlDataDocument의 데이터를 보려면 데이터 세트의 스키마를 설정해야 합니다. 데이터 세트 스키마의 테이블 이름과 열 이름은 동기화할 XML 요소의 이름과 일치해야 합니다. 이 일치는 대/소문자를 구분합니다.
다음 코드 예제에서는 XmlDataDocument에서 데이터의 관계형 뷰에 액세스하는 방법을 보여 있습니다.
Dim xmlDoc As XmlDataDocument = New XmlDataDocument Dim dataSet As DataSet = xmlDoc.DataSet ' Add code here to create the schema of the DataSet to view the data. xmlDoc.Load("XMLDocument.xml")
XmlDataDocument xmlDoc = new XmlDataDocument(); DataSet dataSet = xmlDoc.DataSet; // Add code here to create the schema of the DataSet to view the data. xmlDoc.Load("XMLDocument.xml");
XmlDataDocument를 DataSet과 동기화하는 또 다른 이점은 XML 문서의 충실도가 유지된다는 것입니다. ReadXml을 사용하여 XML 문서에서 DataSet을 채우는 경우 데이터가 WriteXml을 사용하여 XML 문서로 다시 기록될 때 원래 XML 문서와 크게 다를 수 있습니다. 이는 DataSet이 XML 문서에서 공백과 같은 서식이나 요소 순서와 같은 계층적 정보를 유지하지 않기 때문입니다. 또한 DataSet에는 데이터 세트의 스키마와 일치하지 않아 무시된 XML 문서의 요소가 포함되어 있지 않습니다. XmlDataDocument를 DataSet과 동기화하면 원래 XML 문서의 서식 및 계층적 요소 구조를 XmlDataDocument에서 유지 관리할 수 있지만 DataSet에는 DataSet에 적합한 데이터 및 스키마 정보만 포함됩니다.
DataSet을 XmlDataDocument와 동기화하는 경우 개체 중첩 여부에 DataRelation 따라 결과가 다를 수 있습니다. 자세한 내용은 데이터 관계 중첩을 참조하세요.
이 섹션 안에
DataSet을 XmlDataDocument와 동기화
XmlDataDocument와 최소 스키마를 사용하여 강력한 형식의 DataSet을 동기화하는 방법을 보여 줍니다.
데이터 세트에서 XPath 쿼리 수행
DataSet의 내용에 대해 XPath 쿼리를 수행하는 방법을 보여 줍니다.
데이터 세트에 XSLT 변환 적용
DataSet의 내용에 XSLT 변환을 적용하는 방법을 보여 줍니다.
관련 섹션
DataSet에서 XML 사용
DataSet의 콘텐츠를 XML 데이터로 로드하고 유지하는 것을 포함하여 데이터 세트가 데이터 원본으로 XML과 상호 작용하는 방법을 설명합니다.
중첩된 DataRelations
DataSet의 내용을 XML 데이터로 나타낼 때 중첩된 DataRelation 개체의 중요성에 대해 설명하고 이러한 관계를 만드는 방법을 설명합니다.
DataSets(데이터셋), DataTables(데이터 테이블) 및 DataViews(데이터 뷰)
데이터 세트를 사용하여 애플리케이션 데이터를 관리하고 관계형 데이터베이스 및 XML을 비롯한 데이터 원본과 상호 작용하는 방법을 설명합니다.
XmlDataDocument
XmlDataDocument 클래스에 대한 참조 정보를 포함합니다.