ADO.NET 스키마를 사용하거나 사용하지 않고 XML 표현 DataSet을 작성할 수 있습니다. 스키마 정보가 XML과 인라인으로 포함된 경우 XSD(XML 스키마 정의 언어)를 사용하여 작성됩니다. 스키마에는 관계 및 제약 조건 정의 DataSet 뿐만 아니라 테이블 정의도 포함됩니다.
XML DataSet 데이터로 작성된 경우 행은 DataSet 현재 버전으로 작성됩니다. 그러나 행의 DataSet 현재 값과 원래 값이 모두 포함되도록 DiffGram으로 작성할 수도 있습니다.
파일, 스트림, DataSet 또는 문자열에 XML 표현 을 쓸 수 있습니다. 이러한 선택은 XML 표현 DataSet을 전송하는 방법에 대한 뛰어난 유연성을 제공합니다. 문자열로 XML 표현을 DataSet 가져오려면 다음 예제와 같이 메서드를 사용합니다 GetXml .
Dim xmlDS As String = custDS.GetXml()
string xmlDS = custDS.GetXml();
GetXml는 스키마 정보 없이 XML로 표현된 DataSet을 반환합니다. XML 스키마로 스키마 정보를 DataSet 문자열에 쓰려면 GetXmlSchema를 사용합니다.
DataSet를 파일, 스트림 또는 XmlWriter에 쓰려면 WriteXml 메서드를 사용하십시오. 전달하는 WriteXml 첫 번째 매개 변수는 XML 출력의 대상입니다. 예를 들어 파일 이름, System.IO.TextWriter 개체 등이 포함된 문자열을 전달합니다. 선택적 두 번째 매개 변수를 XmlWriteMode 전달하여 XML 출력을 작성하는 방법을 지정할 수 있습니다.
다음 표에서는 XmlWriteMode에 대한 옵션을 보여줍니다.
| XmlWriteMode 옵션 | 설명 |
|---|---|
| 스키마 무시하기 | XML 스키마 없이 현재 내용을 XML 데이터로 DataSet에 작성합니다. 기본값입니다. |
| WriteSchema | 관계형 구조를 인라인 XML 스키마로 사용하여 XML 데이터의 현재 내용을 DataSet 씁니다. |
| DiffGram | 원래 값과 현재 값을 포함하여 전체 DataSet 값을 DiffGram으로 씁니다. 자세한 내용은 DiffGrams를 참조하세요. |
개체가 포함된 DataSet XML 표현을 DataRelation 작성할 때는 결과 XML에서 각 관계의 자식 행이 관련 부모 요소 내에 중첩되도록 할 가능성이 큽니다. 이렇게 하려면 DataRelation을 DataSet에 추가할 때, DataRelation의 Nested 속성을 true로 설정합니다. 자세한 내용은 데이터 관계 중첩을 참조하세요.
다음은 파일에 대한 XML 표현 DataSet 을 작성하는 방법에 대한 두 가지 예입니다. 첫 번째 예제에서는 결과 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 요소, 특성 및 텍스트에 열 매핑
개체의 속성을 ColumnMapping 사용하여 DataColumn XML에서 테이블의 열을 나타내는 방법을 지정할 수 있습니다. 다음 표는 테이블 열의 ColumnMapping 속성에 대한 MappingType 다양한 값과 그에 따른 결과 XML을 보여줍니다.
| MappingType 값 | 설명 |
|---|---|
| 요소 | 기본값입니다. 열은 ColumnName이 요소의 이름이고 열 내용이 요소의 텍스트로 기록되는 XML 요소로 작성됩니다. 다음은 그 예입니다.<ColumnName>Column Contents</ColumnName> |
| 속성 | 열은 ColumnName이 특성의 이름이고 열의 내용이 특성 값으로 작성된 현재 행에 대한 XML 요소의 XML 특성으로 작성됩니다. 다음은 그 예입니다.<RowElement ColumnName="Column Contents" /> |
| SimpleContent | 열의 내용은 현재 행의 XML 요소에 텍스트로 작성됩니다. 다음은 그 예입니다.<RowElement>Column Contents</RowElement>Element 열이나 중첩 관계가 있는 테이블의 열에 대해서는 SimpleContent를 설정할 수 없습니다. |
| 숨겨진 | 열이 XML 출력에 기록되지 않았습니다. |