Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
No ADO.NET você pode escrever uma representação XML de um DataSet, com ou sem seu esquema. Se as informações do esquema forem incluídas em linha com o XML, elas serão escritas usando a linguagem de definição de esquema XML (XSD). O esquema contém as definições de tabela do DataSet bem como as definições de relação e restrição.
Quando um DataSet é gravado como dados XML, as linhas no DataSet são escritas nas suas versões atuais. No entanto, o DataSet também pode ser escrito como um DiffGram para que os valores atuais e originais das linhas sejam incluídos.
A representação XML do DataSet pode ser gravada em um arquivo, um fluxo, um XmlWriter ou uma cadeia de caracteres. Essas opções fornecem grande flexibilidade para como você transporta a representação XML do DataSet. Para obter a representação XML do DataSet como uma cadeia, use o GetXml método mostrado no exemplo seguinte.
Dim xmlDS As String = custDS.GetXml()
string xmlDS = custDS.GetXml();
GetXml devolve a representação XML do DataSet sem informação de esquema. Para gravar as informações do esquema do DataSet como esquema XML em uma string, use GetXmlSchema.
Para escrever um DataSet num ficheiro, stream ou XmlWriter, utilize o método WriteXml. O primeiro parâmetro que você passa para WriteXml é o destino da saída XML. Por exemplo, passe uma cadeia de caracteres contendo um nome de arquivo, um objeto System.IO.TextWriter e assim por diante. Pode passar um segundo parâmetro opcional de um XmlWriteMode para especificar como escrever a saída XML.
A tabela a seguir mostra as opções para XmlWriteMode.
| Opção XmlWriteMode | Descrição |
|---|---|
| IgnoreSchema | Grava o conteúdo atual do DataSet como dados XML, sem um esquema XML. Este é o padrão. |
| WriteSchema | Grava o conteúdo atual de DataSet como dados XML com a estrutura relacional integrada como Esquema XML em linha. |
| DiffGram | Grava todo DataSet como um DiffGram, incluindo valores originais e atuais. Para obter mais informações, consulte DiffGrams. |
Ao escrever uma representação XML de a DataSet que contenha DataRelation objetos, provavelmente irá querer que o XML resultante tenha as linhas filhas de cada relação aninhadas dentro dos seus elementos parentais relacionados. Para conseguir isto, defina a Nested propriedade de DataRelation a true quando adiciona o DataRelation ao DataSet. Para obter mais informações, consulte Aninhando DataRelations.
A seguir estão dois exemplos de como gravar a representação XML de um DataSet em um arquivo. O primeiro exemplo passa o nome do arquivo para o XML resultante como uma cadeia de caracteres para WriteXml. O segundo exemplo passa um objeto 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();
Mapeando colunas para elementos, atributos e texto XML
Pode especificar como uma coluna de uma tabela é representada em XML usando a ColumnMapping propriedade do DataColumn objeto. A tabela seguinte mostra os diferentes MappingType valores para a ColumnMapping propriedade de uma coluna de tabela e o XML resultante.
| Valor do Tipo de Mapeamento | Descrição |
|---|---|
| elemento | Este é o padrão. A coluna é escrita como um elemento XML, onde ColumnName é o nome do elemento e o conteúdo da coluna é escrito como o texto do elemento. Por exemplo:<ColumnName>Column Contents</ColumnName> |
| Atributo | A coluna é escrita como um atributo XML do elemento XML para a linha atual, onde ColumnName é o nome do atributo e o conteúdo da coluna é escrito como o valor do atributo. Por exemplo:<RowElement ColumnName="Column Contents" /> |
| Conteúdo simples | O conteúdo da coluna é escrito como texto no elemento XML para a linha atual. Por exemplo:<RowElement>Column Contents</RowElement>Note que SimpleContent não pode ser definido para uma coluna de uma tabela que tenha Element colunas ou relações aninhadas. |
| Escondido | A coluna não está escrita na saída XML. |