Array
(
)

Obter esquema a partir de um XML

Carlosib
   - 21 jul 2006

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


Carlosrodrigop
   - 25 jul 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


Carlosib
   - 25 jul 2006

Amigo com o código abaixo consegui construir o esquema:
#Código


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?


Carlosrodrigop
   - 26 jul 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