Obter esquema a partir de um XML

21/07/2006

0

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


Carlosib

Carlosib

Responder

Posts

25/07/2006

Carlosrodrigop

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


Responder

25/07/2006

Carlosib

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?


Responder

26/07/2006

Carlosrodrigop

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


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar