Obter esquema a partir de um XML

Delphi

21/07/2006

Pessoal,
tenho um arquivo XMl e queria obter o schema dele. Como fazer isso em c#? É possível?


Carlosib

Carlosib

Curtidas 0

Respostas

Carlosrodrigop

Carlosrodrigop

21/07/2006

Sim existe, carregue o Xml em um DataSet. O objeto data set possui um método para escrever o xsd (Xml Schema). Acho que é writeSchena ou writeXSD se eu nao me engano


GOSTEI 0
Carlosib

Carlosib

21/07/2006

Amigo com o código abaixo consegui construir o esquema:
            DataSet ds = new DataSet("MeuDataSet");
            ds.ReadXml(@"c:\XML\revelban_20060717152506.xml");
            ds.WriteXmlSchema(@"c:\Teste.xsd");

Abrindo o arquivo Teste.xsd no VisualStudio 2005 consegui enxergar as tabelas e seu relacionamento.

De posse desse schema consigo fazer select entre as tabelas com seus relacionamentos? Se sim(e acredito que sim!!!) qual o caminho que devo estudar? Quais classe me ajudarão a solucionar esse problema?


GOSTEI 0
Carlosrodrigop

Carlosrodrigop

21/07/2006

O proprio objeto dataset possui metodos para obter os dados de tabelas relacionadas e objtos que interacao com o metodo Relations e retorna um objeto do tipo DataRelations.

Segue um exemplo do msdn

Private Sub PrintChildRelationRows()
´ Declare variable to hold the row values.
Dim rowValues As String
Dim dataSet As DataSet

´ Get the DataSet of a DataGrid that is displaying data
´ of at least two tables.
Dim table As DataTable = CType(DataGrid1.DataSource, DataTable)

´ Navigate using the Relations.
Dim relation As DataRelation
Dim row As DataRow
Dim column As DataColumn

´ Print the names of each column in each table.
For Each relation In dataSet.Relations
For Each column in relation.ChildTable.Columns
rowValues &= column.ColumnName & ´ ´
Next
Next

´ Display results.
Console.WriteLine(rowValues)
End Sub


GOSTEI 0
POSTAR