load xml in gridview

3

In my project, I need to select an XML file from some HD folder and then read its contents and show it in a gridview.

At this point, I can open the window to select the file , but I can not read that file and iterate over it and show the XML data in a gridview ...

How can I do this?

My codes:

 Stream myStream = null;
        OpenFileDialog openFileDialogXML = new OpenFileDialog();

        openFileDialogXML.InitialDirectory = "c:\";
        openFileDialogXML.Filter = "xml files (*.xml)|*.txt|All files (*.*)|*.*";
        openFileDialogXML.FilterIndex = 2;
        openFileDialogXML.RestoreDirectory = true;

        if (openFileDialogXML.ShowDialog() == DialogResult.OK)
        {
            try
            {
                if ((myStream = openFileDialogXML.OpenFile()) != null)
                {
                    using (myStream)
                    {
                        string caminhoArquivo = openFileDialogXML.ToString();

                        XmlDocument documento = new XmlDocument();
                        documento.Load(caminhoArquivo);
                        string docLoaded = documento.ToString(); 
                        // Insert code to read the stream here.

                        //classe que representa um xml, e faz o parse da string para o arquivo
                        XDocument doc = XDocument.Parse(docLoaded);

                        //cria a representação de uma tabela
                        DataTable tabela = new DataTable();

                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));
                        tabela.Columns.Add("tabela", typeof(string));

                        ////cria as linhas da tabela
                        DataRow registro;

                        ////itera sobre a tag do xml para pegar todos os dados 
                        foreach (var elmCertidao in doc.Root.Elements("tag"))
                        {

                            //recebe os registros do xml e representa em linhas
                            registro = tabela.NewRow();

                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                            registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));

                        //    //objeto com todas as colunas
                            tabela.Rows.Add(registro);
                        }

                        ////monta o grid com as informações presentes no objeto
                        dgDataGrid.DataSource = tabela;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
            }
        }

I know it's wrong, but I've never done this kind of thing, so if you can help me, it would be great!

EDIT

I'm able to scan XML, but only up to a certain tag ... How can I get everything? I can only scan up to tag 13.

Codes:

 if (openFileDialogXML.ShowDialog() == DialogResult.OK)
        {
            try
            {
                if ((myStream = openFileDialogXML.OpenFile()) != null)
                {
                    using (myStream)
                    {
                        //limpa o conteudo do textbox
                        txtCaminhoArquivoXML.Text = "";

                        // Le os arquivos selecionados 
                        foreach (String arquivo in openFileDialogXML.FileNames)
                        {
                            txtCaminhoArquivoXML.Text += arquivo;
                        }

                        try
                        {
                            // carrega e exibe o arquivo XML(le o conteudo do xml que esta no caminho do diretório)
                            StreamReader SR = File.OpenText(txtCaminhoArquivoXML.Text);
                            string _stringXml = SR.ReadToEnd();
                            SR.Close();

                            _stringXml = _stringXml.Replace("\n", "");
                            _stringXml = _stringXml.Replace("\r", "");

                            //faz o parse de uma string para uma representação de XML
                            XDocument doc = XDocument.Parse(_stringXml);

                            //cria a representação de uma tabela
                            DataTable tabela = new DataTable();

                            tabela.Columns.Add("tag1", typeof(string));
                            tabela.Columns.Add("tag2", typeof(string));
                            tabela.Columns.Add("tag3", typeof(string));
                            tabela.Columns.Add("tag4", typeof(string));
                            tabela.Columns.Add("tag5", typeof(string));
                            tabela.Columns.Add("tag6", typeof(string));
                            tabela.Columns.Add("tag7", typeof(string));
                            tabela.Columns.Add("tag8", typeof(string));
                            tabela.Columns.Add("tag9", typeof(string));
                            tabela.Columns.Add("tag10", typeof(string));
                            tabela.Columns.Add("tag11", typeof(string));
                            tabela.Columns.Add("tag12", typeof(string));
                            tabela.Columns.Add("tag13", typeof(string));
                            tabela.Columns.Add("tag14", typeof(string));
                            tabela.Columns.Add("tag15", typeof(string));
                            tabela.Columns.Add("tag16", typeof(string));
                            tabela.Columns.Add("tag17", typeof(string));
                            tabela.Columns.Add("tag18", typeof(string));
                            tabela.Columns.Add("tag19", typeof(string));
                            tabela.Columns.Add("tag20", typeof(string));

                            //cria as linhas da tabela
                            DataRow registro;

                            //itera sobre a tag do xml para pegar todos os dados 
                            foreach (var elmCertidao in doc.Root.Elements("emissao"))
                            {
                                //recebe os registros do xml e representa em linhas
                                registro = tabela.NewRow();

                                registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmCertidao.Element("tag"));
                                registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                                registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                                registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                                registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));

                                //objeto com todas as colunas
                                tabela.Rows.Add(registro);
                            }

                            //monta o grid com as informações presentes no objeto
                            dgDataGrid.DataSource = tabela;
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Erro ao carregar arquivo : " + ex.Message);
                        }


                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: Não foi possível ler o arquivo a partir do disco. Erro original: " + ex.Message);
            }
        }
    
asked by anonymous 22.06.2015 / 19:22

1 answer

0

I was able to solve it very simply. Note that in the code, I have foreach's tags over all tags of XML to get the value there.

Codes:

private void tsbImportarXML_Click(object sender, EventArgs e)
    {
        //Configura a janela que abre para o usuário escolher o arquivo
        Stream myStream = null;
        OpenFileDialog openFileDialogXML = new OpenFileDialog();

        //Já abre a janela dentro do C:
        openFileDialogXML.InitialDirectory = "c:\";

        //Tipos de arquivo
        openFileDialogXML.Filter = "Arquivos XML (*.XML)|*.XML|Todos os Arquivos (*.*)|*.*";

        //Obtém ou define o índice do filtro selecionado atualmente na caixa de diálogo de arquivo. 
        openFileDialogXML.FilterIndex = 2;

        //Obtém ou define um valor indicando se a caixa de diálogo restaura o diretório atual antes de fechar. 
        openFileDialogXML.RestoreDirectory = true;

        #region Carregamento do XML no Grid

        if (openFileDialogXML.ShowDialog() == DialogResult.OK)
        {
            try
            {
                if ((myStream = openFileDialogXML.OpenFile()) != null)
                {
                    using (myStream)
                    {
                        //limpa o conteudo do textbox
                        txtCaminhoArquivoXML.Text = "";

                        // Le os arquivos selecionados 
                        foreach (String arquivo in openFileDialogXML.FileNames)
                        {
                            txtCaminhoArquivoXML.Text += arquivo;
                        }

                        try
                        {
                            // carrega e exibe o arquivo XML(le o conteudo do xml que esta no caminho do diretório)
                            StreamReader SR = File.OpenText(txtCaminhoArquivoXML.Text);
                            string _stringXml = SR.ReadToEnd();
                            SR.Close();

                            _stringXml = _stringXml.Replace("\n", "");
                            _stringXml = _stringXml.Replace("\r", "");

                            //faz o parse de uma string para uma representação de XML
                            XDocument doc = XDocument.Parse(_stringXml);                            

                            //cria a representação de uma tabela
                            DataTable tabela = new DataTable();

                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));
                            tabela.Columns.Add("tag", typeof(string));

                            //cria as linhas da tabela
                            DataRow registro;

                            //itera sobre a tag do xml para pegar todos os dados 
                            foreach (var elmXML in doc.Root.Elements("tag"))
                            {
                                //recebe os registros do xml e representa em linhas
                                registro = tabela.NewRow();

                                registro["tag"] = GetValueOrDefault(doc.Root.Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));

                                //itera sobre o subelemento gemeos dentro da tag root ali de cima
                                foreach (var elmXMLTag in elmXML.Elements("tag"))
                                {
                                    registro["tag"] = GetValueOrDefault(elmXMLTag.Element("tag"));

                                    //itera sobre o subelemento irmao dentro da tag ali de cima
                                    foreach (var elmXML2Tag in elmXMLTag.Elements("tag"))
                                    {
                                        registro["tag"] = GetValueOrDefault(elmXML2Tag.Element("tag"));
                                    }                                       
                                }

                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));
                                registro["tag"] = GetValueOrDefault(elmXML .Element("tag"));

                                foreach (var elmRej in doc.Root.Elements("tag"))
                                {
                                    registro["tag"] = GetValueOrDefault(elmRej.Element("tag"));
                                }


                                //objeto com todas as colunas
                                tabela.Rows.Add(registro);
                            }

                            //monta o grid com as informações presentes no objeto
                            dgDataGrid.DataSource = tabela;
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Erro ao carregar arquivo : " + ex.Message);
                        }


                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: Não foi possível ler o arquivo a partir do disco. Erro original: " + ex.Message);
            }
        }

        #endregion
    }

    #region Métodos

    //verifica o primeiro valor e se for diferente de null retorna todas as informações do xml
    public static string GetValueOrDefault(XElement xElement)
    {
        if (xElement != null)
            return xElement.Value;

        return String.Empty;
    }

    #endregion

tag read the xml element, the node, the xml tag. txtChangeFileXML read a text field in form

    
23.06.2015 / 13:26