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ódigostring 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