DataSet 내용을 XML 데이터로 쓰기(ADO.NET)
업데이트: November 2007
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();
GetXml은 DataSet의 XML 표현을 스키마 정보 없이 반환합니다. XML 스키마인 DataSet에서 스키마 정보를 문자열로 작성하려면 GetXmlSchema를 사용합니다.
DataSet을 파일, 스트림 또는 XmlWriter로 작성하려면 WriteXml 메서드를 사용합니다. WriteXml에 전달하는 첫 번째 매개 변수는 XML 출력의 대상입니다. 예를 들어, 파일 이름이 들어 있는 문자열인 System.IO.TextWriter 개체 등을 전달할 수 있습니다. XmlWriteMode의 두 번째 선택적 매개 변수를 전달하여 XML 출력이 작성되는 방법을 지정할 수 있습니다.
다음 표에서는 XmlWriteMode의 옵션을 보여 줍니다.
XmlWriteMode 옵션 |
설명 |
---|---|
IgnoreSchema |
DataSet의 현재 내용을 XML 스키마 없이 XML 데이터로 작성합니다. 이것은 기본값입니다. |
WriteSchema |
DataSet의 현재 내용을 인라인 XML 스키마와 동일한 관계형 구조를 가진 XML 데이터로 작성합니다. |
DiffGram |
원래 및 현재 값을 포함하여 전체 DataSet을 DiffGram으로 작성합니다. 자세한 내용은 DiffGrams(ADO.NET)을 참조하십시오. |
DataRelation 개체가 포함된 DataSet의 XML 표현을 작성하는 경우에는 대개 관련된 부모 요소 내에 중첩되어 있는 각 관계의 자식 행을 결과로 나타나는 XML에 포함시키려 합니다. 이를 수행하려면 DataSet에 DataRelation을 추가할 때 DataRelation의 Nested 속성을 true로 설정합니다. 자세한 내용은 DataRelations 중첩(ADO.NET)를 참조하십시오.
다음은 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 값 |
설명 |
---|---|
Element |
이것은 기본값입니다. 열이 XML 요소로 작성되며, 이 때 ColumnName이 요소의 이름이 되고 열의 내용은 요소의 텍스트로 작성됩니다. 예를 들면 다음과 같습니다.
|
Attribute |
열이 현재 행에 대한 XML 요소의 XML 특성으로 작성되며, 이 때 특성의 이름은 ColumnName이며 열의 내용은 특성의 값으로 작성됩니다. 예를 들면 다음과 같습니다.
|
SimpleContent |
열의 내용이 현재 행에 대한 XML 요소의 텍스트로 작성됩니다. 예를 들면 다음과 같습니다.
Element 열이나 중첩된 관계를 가진 테이블의 열에 대해서는 SimpleContent를 설정할 수 없습니다. |
Hidden |
열이 XML 출력으로 작성되지 않습니다. |
참고 항목
개념
DataSet 스키마 정보를 XSD로 작성(ADO.NET)