LER TAG DE XML AVO
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
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.
select case icms
case ICMS00
case CMS10
e assim por diante, em todas as tags desse tipo.
NILSONTRES
O maior problema é que eu não consigo acessar os dados contidos dentro da tag avó <ICMS>, é como se ela não existisse.
O maior problema é que eu não consigo acessar os dados contidos dentro da tag avó <ICMS>, é como se ela não existisse.
você poderia colocar um xml com outros dados icms e informar como você quer carregar isso no datagrid (digo colunas etc)?
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;
}
}
}
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