Zapisywanie zawartości elementu DataSet jako danych XML
W ADO.NET można napisać reprezentację XML obiektu DataSetz jego schematem lub bez jego schematu. Jeśli informacje o schemacie są dołączone do kodu XML, są zapisywane przy użyciu języka definicji schematu XML (XSD). Schemat zawiera definicje tabeli oraz definicje DataSet relacji i ograniczeń.
Gdy element DataSet jest zapisywany jako dane XML, wiersze w elemencie DataSet są zapisywane w ich bieżących wersjach. Można jednak również zapisać jako DiffGram, DataSet aby uwzględnić zarówno bieżące, jak i oryginalne wartości wierszy.
Reprezentacja DataSet XML obiektu może być zapisywana w pliku, strumieniu, kodzie XmlWriter lub ciągu. Te opcje zapewniają dużą elastyczność w sposobie transportu reprezentacji XML elementu DataSet. Aby uzyskać reprezentację DataSet XML jako ciągu, użyj metody GetXml , jak pokazano w poniższym przykładzie.
Dim xmlDS As String = custDS.GetXml()
string xmlDS = custDS.GetXml();
Polecenie GetXml zwraca reprezentację DataSet XML bez informacji o schemacie. Aby zapisać informacje o schemacie z DataSet elementu (jako schemat XML) do ciągu, użyj polecenia GetXmlSchema.
Aby zapisać DataSet element do pliku, strumienia lub narzędzia XmlWriter, użyj metody WriteXml . Pierwszym parametrem przekazywanym do pliku WriteXml jest miejsce docelowe danych wyjściowych XML. Na przykład przekaż ciąg zawierający nazwę pliku, obiekt System.IO.TextWriter itd. Możesz przekazać opcjonalny drugi parametr elementu XmlWriteMode , aby określić sposób zapisywania danych wyjściowych XML.
W poniższej tabeli przedstawiono opcje elementu XmlWriteMode.
Opcja XmlWriteMode | opis |
---|---|
IgnorujSchema | Zapisuje bieżącą zawartość DataSet jako dane XML bez schematu XML. Jest to opcja domyślna. |
Writeschema | Zapisuje bieżącą zawartość DataSet elementu jako dane XML ze strukturą relacyjną jako wbudowany schemat XML. |
Formacie diffgram | Zapisuje całość DataSet jako DiffGram, w tym oryginalne i bieżące wartości. Aby uzyskać więcej informacji, zobacz DiffGrams. |
Podczas pisania reprezentacji XML zawierającej DataSet obiekty DataRelation najprawdopodobniej chcesz, aby wynikowy kod XML zawierał wiersze podrzędne każdej relacji zagnieżdżone w powiązanych elementach nadrzędnych. Aby to osiągnąć, ustaw właściwość Zagnieżdżona elementu DataRelation na wartość true podczas dodawania elementu DataRelation do elementu DataSet. Aby uzyskać więcej informacji, zobacz Zagnieżdżanie danychRelations.
Poniżej przedstawiono dwa przykłady zapisywania reprezentacji DataSet XML elementu w pliku. Pierwszy przykład przekazuje nazwę pliku dla wynikowego kodu XML jako ciąg do pliku WriteXml. Drugi przykład przekazuje obiekt 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();
Mapowanie kolumn na elementy XML, atrybuty i tekst
Możesz określić, jak kolumna tabeli jest reprezentowana w formacie XML przy użyciu właściwości ColumnMapping obiektu DataColumn. W poniższej tabeli przedstawiono różne wartości MappingType dla właściwości ColumnMapping kolumny tabeli i wynikowy kod XML.
Wartość MappingType | opis |
---|---|
Element | Jest to opcja domyślna. Kolumna jest zapisywana jako element XML, w którym kolumna ColumnName jest nazwą elementu, a zawartość kolumny jest zapisywana jako tekst elementu. Na przykład:<ColumnName>Column Contents</ColumnName> |
Atrybut | Kolumna jest zapisywana jako atrybut XML elementu XML dla bieżącego wiersza, w którym kolumna ColumnName jest nazwą atrybutu, a zawartość kolumny jest zapisywana jako wartość atrybutu. Na przykład:<RowElement ColumnName="Column Contents" /> |
SimpleContent | Zawartość kolumny jest zapisywana jako tekst w elemencie XML dla bieżącego wiersza. Na przykład:<RowElement>Column Contents</RowElement> Należy pamiętać, że nie można ustawić parametru SimpleContent dla kolumny tabeli zawierającej kolumny elementu lub relacje zagnieżdżone. |
Ukryte | Kolumna nie jest zapisywana w danych wyjściowych XML. |