Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Faccruz

[Resolvido] Importar Arquivos XML

Recommended Posts

Bom dia, venho mais uma vez tirar uma dúvida sobre XML

 

eu gostaria de importar os dados que estão em um arquivo XML para uma base MySQL, a leitura eu consegui fazer, mas surgiu uma dúvida

 

Função para Leitura do arquivo XML

XElement xml = XElement.Load(sTabela, LoadOptions.SetBaseUri | LoadOptions.SetLineInfo);

            //Mostra Caminho
            MessageBox.Show(string.Format("Caminho : {0}", xml.BaseUri));

            //Mostra Informacao
            IXmlLineInfo lineInfo = xml as IXmlLineInfo;
            MessageBox.Show(string.Format("LineNumber: {0} e LinePosition: {1}", lineInfo.LineNumber, lineInfo.LinePosition));

            //Carrega Dados
            IEnumerable<XElement> enumerable = xml.Elements();

            //Mostra todos os dados
            foreach (var item in enumerable)
                MessageBox.Show(item.ToString());

            //Mostra todos os atributos do elemento LOJA
            foreach (var item in enumerable.Attributes("Loja"))
                MessageBox.Show(item.ToString());

            //Mostra todos os atributos do elemento DATA
            foreach (var item in enumerable.Elements("Data"))
                MessageBox.Show(item.ToString());

            //Mostra todos os atributos do elemento OBS
            foreach (var item in enumerable.Attributes("Obs"))
                MessageBox.Show(item.ToString());

Mas ele me retorna dessa forma. Ex:

<Data>19/10/2009</Data>

Como faço para retornar apenas o campo sem o elemento? Ex:

19/10/2009

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei isso na internet

 

string filename = "test.xml";

XmlTextReader tr = new XmlTextReader(filename);

while(tr.Read())
{
     if(tr.NodeType == XmlNodeType.Text)
          System.Console.WriteLine(tr.Value);
}

Realmente exibe apenas o que está entre <Node></Node>, mas como faço para jogar isso em um insert? pois pelo que percebi ele exibe um elemento de cada vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E você não quer inserir uma linha por vez?

 

consegui resolver da seguinte forma

//Lista de string para receber dados do XML
            List<string> Dados = new List<string>();
            //Abre arquivo XML
            XmlTextReader linha = new XmlTextReader(sArquivoXml);
            // Enquando existir linha no arquivo faça
            while (linha.Read())
            {
                // Se for uma linha de conteudo apresente do valor da linha.
                if (linha.NodeType == XmlNodeType.Text)
                // Escreve o valor da linha.
                Dados.Add(linha.Value);                
            }

Depois uso Dados[0], Dados[1], Dados[2]..Dados[n] no campo que eu precisar

 

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.