Obter esquema a partir de um XML
Pessoal,
tenho um arquivo XMl e queria obter o schema dele. Como fazer isso em c#? É possível?
tenho um arquivo XMl e queria obter o schema dele. Como fazer isso em c#? É possível?
Carlosib
Curtidas 0
Respostas
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
21/07/2006
Amigo com o código abaixo consegui construir o esquema:
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?
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
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
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