데이터 세트 콘텐츠를 XML 데이터로 작성

ADO.NET에서는 해당 스키마의 사용 여부와 관계없이 DataSet을 XML 표현으로 작성할 수 있습니다. 스키마 정보가 XML과 함께 인라인에 포함된 경우에는 XSD(XML 스키마 정의 언어)를 사용하여 작성됩니다. 이 스키마에는 DataSet의 테이블 정의와 관계 및 제약 조건 정의가 포함됩니다.

DataSet이 XML 데이터로 작성되면 DataSet의 행은 자신의 현재 버전으로 작성됩니다. 그러나 DataSet은 DiffGram으로 작성될 수도 있으므로 행의 현재 및 원래 값이 모두 포함됩니다.

DataSet의 XML 표현은 파일, 스트림, XmlWriter 또는 문자열로 작성할 수 있습니다. 이와 같이 다양한 작성이 가능하므로 DataSet의 XML 표현을 전송하는 방법은 매우 유연합니다. DataSet의 XML 표현을 문자열로 작성하려면 다음 예제와 같이 GetXml 메서드를 사용합니다.

Dim xmlDS As String = custDS.GetXml()  
string xmlDS = custDS.GetXml();  

GetXmlDataSet의 XML 표현을 스키마 정보 없이 반환합니다. DataSet(XML 스키마)에서 스키마 정보를 문자열로 작성하려면 GetXmlSchema를 사용합니다.

파일, 스트림 또는 XmlWriterDataSet를 작성하려면 WriteXml 메서드를 사용합니다. WriteXml에 전달하는 첫 번째 매개 변수는 XML 출력의 대상입니다. 예를 들어, 파일 이름이 들어 있는 문자열인 System.IO.TextWriter 개체 등을 전달할 수 있습니다. XmlWriteMode의 두 번째 선택적 매개 변수를 전달하여 XML 출력이 작성되는 방법을 지정할 수 있습니다.

다음 표에서는 XmlWriteMode의 옵션을 보여 줍니다.

XmlWriteMode 옵션 설명
IgnoreSchema DataSet의 현재 내용을 XML 스키마 없이 XML 데이터로 작성합니다. 기본값입니다.
WriteSchema DataSet의 현재 내용을 인라인 XML 스키마와 동일한 관계형 구조를 가진 XML 데이터로 작성합니다.
DiffGram 원래 값과 현재 값을 포함하여 전체 DataSet DiffGram으로 씁니다. 자세한 내용은 DiffGrams를 참조하세요.

DataRelation 개체가 포함된 DataSet의 XML 표현을 작성하는 경우에는 대개 관련된 부모 요소 내에 중첩되어 있는 각 관계의 자식 행을 결과로 나타나는 XML에 포함시키려 합니다. 이를 수행하려면 DataSetDataRelation을 추가할 때 DataRelationNested 속성을 true로 설정합니다. 자세한 내용은 DataRelation 중첩을 참조하세요.

다음은 DataSet의 XML 표현을 파일로 작성하는 방법에 대한 두 가지 예제입니다. 첫 번째 예제에서는 결과 XML 파일 이름을 WriteXml에 문자열로 전달합니다. 두 번째 예제에서는 System.IO.StreamWriter 개체를 전달합니다.

custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema)  
custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema);  
Dim xmlSW As System.IO.StreamWriter = New System.IO.StreamWriter("Customers.xml")  
custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema)  
xmlSW.Close()  
System.IO.StreamWriter xmlSW = new System.IO.StreamWriter("Customers.xml");  
custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema);  
xmlSW.Close();  

열을 XML 요소, 특성 및 텍스트에 매핑

DataColumn 개체의 ColumnMapping 속성을 사용하여 XML에서 테이블의 열을 표현하는 방법을 지정할 수 있습니다. 다음 표에서는 테이블 열의 ColumnMapping 속성에 대한 서로 다른 MappingType 값과 그 결과로 나타나는 XML을 보여 줍니다.

MappingType 값 설명
요소 기본값입니다. 열이 XML 요소로 작성되며, 이 때 ColumnName이 요소의 이름이 되고 열의 내용은 요소의 텍스트로 작성됩니다. 예시:

<ColumnName>Column Contents</ColumnName>
Attribute 열이 현재 행에 대한 XML 요소의 XML 특성으로 작성되며, 이 때 특성의 이름은 ColumnName이며 열의 내용은 특성의 값으로 작성됩니다. 예시:

<RowElement ColumnName="Column Contents" />
SimpleContent 열의 내용이 현재 행에 대한 XML 요소의 텍스트로 작성됩니다. 예시:

<RowElement>Column Contents</RowElement>

요소 열이나 중첩된 관계를 가진 테이블의 열에 대해서는 SimpleContent를 설정할 수 없습니다.
숨겨짐 열이 XML 출력으로 작성되지 않습니다.

참고 항목