Array
(
)

Importar arquivos XML

Facc
   - 20 out 2009

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#Código

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:

Citação:
<Data>19/10/2009</Data>

Como faço para retornar apenas o campo sem o elemento? Ex:
Citação:
19/10/2009


Facc
   - 20 out 2009

Achei isso na internet

#Código

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.

Facc
   - 20 out 2009

consegui resolver da seguinte forma
#Código

//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