LER TAG DE XML AVO

ALANCS11 19/03/2013 00:12:20
#420717


Olá galera tenho esse xml

[txt-color=#0000f0]-<imposto>-[/txt-color]
[txt-color=#e80000]<ICMS>[/txt-color]
<ICMS60>
<orig>0</orig>
<CST>60</CST>
</ICMS60>
[txt-color=#e80000]</ICMS>[/txt-color]
[txt-color=#0000f0]-</imposto>[/txt-color]

Gostaria de pegar os dados que estão dentro da tag ICMS,
pois o nome da tag <icms60> podem variar nesses nomes:
ICMS00
ICMS10
ICMS20
ICMS30
ICMS40
ICMS51 entre outros

consigo jogar para o meu datagridview usando esse código

ds = new DataSet();
ds.ReadXml(fcaminho);

dgv1.DataSource = ds.Tables[[Ô]icms60[Ô]];


Mais como esse valor varia não dá certo pois no mesmo xml tem vários tipos na parte de impostos/ICMS


Ajudaa Por favor




ICMSSN500
ICMSSN900
NILSONTRES 19/03/2013 00:55:32
#420718
Resposta escolhida
Eu identifico a tag, e faço um select de todos os possiveis.

select case icms
case ICMS00

case CMS10

e assim por diante, em todas as tags desse tipo.
ALANCS11 19/03/2013 09:39:02
#420733
NILSONTRES

O maior problema é que eu não consigo acessar os dados contidos dentro da tag avó <ICMS>, é como se ela não existisse.
LITTLEBOY 20/03/2013 09:42:08
#420781
você poderia colocar um xml com outros dados icms e informar como você quer carregar isso no datagrid (digo colunas etc)?
ALANCS11 20/03/2013 15:20:57
#420796
Vlw pessoal, consegui resolver.
usnado algusn if e case

if (ler.NextSibling.Name.ToString() == [Ô]imposto[Ô])
{
for (int i = 0; i < ler.NextSibling.ChildNodes.Count; i++)
{
switch (ler.NextSibling.ChildNodes.Item(i).Name.ToString())
{
case [Ô]ICMS[Ô]:
//verifica quantos filhos de icms estao dentro do pai
for (int ii = 0; ii < ler.NextSibling.ChildNodes.Item(i).ChildNodes.Count; ii++)
{
for (int iii = 0; iii < ler.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Count; iii++)
{
switch (ler.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).Name.ToString())
{
case [Ô]CSOSN[Ô]:
_row[[Ô]CST[Ô]] = String.Format([Ô]{0:00}[Ô], Convert.ToInt32(ler.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml));
break;

case [Ô]orig[Ô]:

_row[[Ô]orig[Ô]] = ler.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;

break;
case [Ô]CST[Ô]:
_row[[Ô]CST[Ô]] = String.Format([Ô]{0:00}[Ô], Convert.ToInt32(ler.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml));

break;

case [Ô]pICMS[Ô]:
if (ler.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
{
_row[[Ô]pICMS[Ô]] = ler.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
}
break;

}
}
}
Tópico encerrado , respostas não são mais permitidas