다음을 통해 공유


데이터 세트 및 XmlDataDocument 동기화

ADO.NET DataSet으로 데이터의 관계형 표현을 사용할 수 있습니다. 계층적으로 데이터에 액세스하기 위해 .NET Framework에서 사용 가능한 XML 클래스를 사용할 수 있습니다. 지금까지는 데이터의 이와 같은 두 가지 표현이 별도로 사용되어 왔습니다. 그러나 .NET Framework에서는 DataSet 개체 및 XmlDataDocument 개체를 각각 사용하여 관계형 및 계층적 데이터 표현에 실시간 및 동기적으로 액세스할 수 있습니다.

DataSetXmlDataDocument와 동기화되면 두 개체는 단일 데이터 집합을 사용하게 됩니다. 이것은 DataSet가 변경되면 변경 사항이 XmlDataDocument에 적용되며 그 반대의 경우도 마찬가지로 적용됨을 의미합니다. DataSetXmlDataDocument 사이의 이러한 관계로 인해 단일 데이터 집합을 사용하는 단일 애플리케이션을 사용할 수 있게 되므로 상당한 융통성이 생깁니다. 따라서 DataSet 사용을 위해 빌드된 모든 서비스 도구 모음, 예를 들면 Web Forms 및 Windows Forms 컨트롤과 Visual Studio .NET 디자이너 등에 액세스할 수 있을 뿐 아니라 XSL(Extensible Stylesheet Language), XSLT(XSL Transformations), XPath(XML Path Language)를 포함한 XML 서비스 도구 모음에도 액세스할 수 있습니다. 두 서비스를 모두 사용할 수 있으므로 애플리케이션의 대상이 될 서비스 집합을 선택할 필요도 없습니다.

DataSetXmlDataDocument와 동기화할 수 있는 방법에는 여러 가지가 있습니다. 마케팅 목록의 구성원을 관리할 수 있습니다.

  • DataSet를 스키마(관계형 구조)와 데이터로 채운 다음, 새 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를 강력한 형식의 DataSet와 같은 스키마로만 채운 다음, 이를 XmlDataDocument와 동기화하고, XML 문서로부터 XmlDataDocument를 로드합니다. 이렇게 하면 기존 계층적 데이터를 관계형으로 표시할 수 있습니다. DataSet 스키마의 테이블 이름과 열 이름은 함께 동기화할 XML 요소의 이름과 일치해야 합니다. 이 때 대/소문자도 일치해야 합니다.

    DataSet의 스키마는 관계형 뷰에 노출시킬 XML 요소에만 일치하면 됩니다. 이렇게 하면 XML 문서는 아주 크게, 이 문서의 관계형 "창"은 매우 작게 만들 수 있습니다. XmlDataDocument에서는 DataSet에서 XML 문서의 극히 일부분만 노출하는 경우에도 전체 XML 문서가 보존됩니다. (자세한 예제는 XmlDataDocument를 사용하여 DataSet 동기화를 참조하세요.)

    다음 코드 예제에서는 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");  
    

    데이터가 포함된 DataSet와 동기화된 XmlDataDocument는 로드할 수 없습니다. 로드하는 경우에는 예외가 throw됩니다.

  • XmlDataDocument를 만들어 XML 문서로부터 로드한 다음, XmlDataDocumentDataSet 속성을 사용하여 데이터의 관계형 뷰에 액세스합니다. DataSet를 사용하여 XmlDataDocument에 있는 데이터를 표시하려면 먼저 DataSet의 스키마를 설정해야 합니다. 또한 DataSet 스키마의 테이블 이름과 열 이름은 함께 동기화할 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");  
    

XmlDataDocumentDataSet와 동기화할 경우의 또 다른 이점은 XML 문서의 신뢰도를 유지할 수 있다는 것입니다. ReadXml을 사용하여 DataSet를 XML 문서로부터 채우면 WriteXml을 사용하여 데이터를 다시 XML 문서로 작성할 경우 원래 XML 문서와 상당히 달라질 수 있습니다. 이것은 DataSet에서 XML 문서에 사용되었던 공백 등의 서식이나 요소 순서 등의 계층적 정보가 유지되지 않기 때문입니다. DataSet에는 XML 문서에서 Dataset의 스키마와 일치하지 않았기 때문에 무시되었던 요소도 포함되지 않습니다. XmlDataDocumentDataSet와 동기화하면 원래 XML 문서의 서식 및 계층적 요소 구조를 XmlDataDocument에서 유지할 수 있습니다. 반면 DataSet에는 해당 DataSet에 적합한 데이터와 스키마 정보만이 포함됩니다.

DataSetXmlDataDocument와 동기화하면 DataRelation 개체의 중첩 여부에 따라 결과가 달라질 수 있습니다. 자세한 내용은 DataRelation 중첩을 참조하세요.

섹션 내용

XmlDataDocument로 데이터 세트 동기화
최소한의 스키마를 가지고 강력한 형식의 DataSetXmlDataDocument를 동기화하는 예제를 보여 줍니다.

데이터 세트에서 XPath 쿼리 수행
DataSet의 내용에 대해 XPath 쿼리를 수행하는 예제를 보여 줍니다.

XSLT 변형을 데이터 세트에 적용
DataSet의 내용에 XSLT 변형을 적용하는 예제를 보여 줍니다.

데이터 세트에서 XML 사용
DataSet의 내용을 로드하여 XML 데이터로 유지하는 것을 포함하여 DataSet가 데이터 소스로서 XML과 상호 작용하는 방법을 설명합니다.

DataRelation 중첩
DataSet의 내용을 XML 데이터로 표현할 경우 중첩된 DataRelation 개체의 중요성과 이러한 관계를 만드는 방법에 대해 설명합니다.

DataSets, DataTables 및 DataViews
DataSet에 대해 설명하고, DataSet를 사용하여 애플리케이션 데이터를 관리하고 관계형 데이터베이스와 XML을 포함한 데이터 소스와 상호 작용하는 방법을 설명합니다.

XmlDataDocument
XmlDataDocument 클래스에 대한 참조 정보가 포함되어 있습니다.

참고 항목