none
[XML + C#] Dúvida Xml NFE RRS feed

  • Pergunta

  • <?xml version="1.0" encoding="UTF-8"?>
    -<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">-<NFe xmlns="http://www.portalfiscal.inf.br/nfe">-<infNFe versao="2.00" Id="NFe35120556228356008116550300002566921285437430">+<ide>+<emit>-+<dest>-+<det nItem="1">++--------+<det nItem="2">++--------+<det nItem="3">+++-+-+-+-+<total>-+<transp>---+<cobr>---+<infAdic></infNFe></NFe>+<protNFe versao="2.00">-</nfeProc>

    Bom dia pessoal , Estava vendo o Forum e não consegui encontrar minha duvida ...

    Estou precisando pegar desse XML A Id="NFE35120556228356008116550300002566921285437430"

    Consegui pegar os outros dados que precisava de emitente e tal.. Só preciso da id que é a chave de acesso para salvar no arquivo texto paraimportar para outro programa.. 

    O Codigo que estou usando para pegar os outros dados são

    "

    StreamReader sr = new StreamReader(@"C:\XML\config.ini");
                int contaconfig = Convert.ToInt32(sr.ReadLine());
                sr.Close();
                contaconfig++;
                StreamWriter sw = new StreamWriter(@"C:\XML\" + contaconfig.ToString() +".txt");
                XDocument doc = XDocument.Load(@"C:\123.xml");
                XNamespace name = "http://www.portalfiscal.inf.br/nfe";

                var ide = from i in doc.Descendants(name + "ide")
                            select new
                            {
                                indPag = (string)i.Element(name + "indPag"),
                                serie = (string)i.Element(name + "serie"),
                                nNF = (string)i.Element(name + "nNF"),
                                dEmi = (DateTime)i.Element(name + "dEmi")
                            };
                var emit = from i in doc.Descendants(name + "emit")
                             select new
                             {
                                 xNome = (string)i.Element(name + "xNome"),
                                 CNPJ = (string)i.Element(name + "CNPJ")
                             };

                foreach (var dados in ide)
                {
                    sw.Write("B|");
                    sw.Write(dados.indPag);
                    sw.Write("|");
                    sw.Write(dados.serie);
                    sw.Write("|");
                    sw.Write(dados.nNF);
                    sw.Write("|");
                    sw.Write(dados.dEmi.ToShortDateString());
                    sw.Write("\n");

                }

                foreach (var dados in emit)
                {
                    sw.WriteLine();
                    sw.Write("C|");
                    sw.Write(dados.xNome);
                    sw.Write("|");
                    sw.Write(dados.CNPJ);
                    sw.Write("\n");

                }


                sw.Close();
                StreamWriter sw2 = new StreamWriter(@"C:\XML\config.ini");
                sw2.Write(contaconfig.ToString());
                sw2.Close();

    Obrigado !

                                                
    segunda-feira, 4 de junho de 2012 14:01

Respostas

  • Consegui com o seguinte comando.. 

    "

    while (reader.Read())
                {
                    type = reader.NodeType;
                    if (reader.NodeType == XmlNodeType.Element)
                        if (reader.Name == "infNFe")
                        {
                            reader.MoveToAttribute("Id");
                            MessageBox.Show(reader.Value.ToString());
                        }

    "

    Obrigado :)

    • Marcado como Resposta MoluskoRP segunda-feira, 4 de junho de 2012 15:49
    segunda-feira, 4 de junho de 2012 15:40

Todas as Respostas

  • Oi.

    Não tenho muita experiencia em usar essa classe para acessar xml, mas sei que o id da nfe é um atributo e não um elemento.

    Tenta acessar dessa forma:

    i.Attribute(name + "Id");


    Espero ter ajudado
    Ruth Resende
    MVP, MCTS - Biztalk Server
    www.biztalkbrasil.com.br
    Twitter: @ruthresende

    segunda-feira, 4 de junho de 2012 14:55
  • Ruth , 

    Tentei assim : 

    "

    var at = from i in doc.Descendants(name + "infNfe")
                         select new
                         {
                             Id = (string)i.Attribute(name + "Id")
                         };

    "

    Não obtive resultado infelizmente... 

    Mas Obrigado !

    segunda-feira, 4 de junho de 2012 15:31
  • Consegui com o seguinte comando.. 

    "

    while (reader.Read())
                {
                    type = reader.NodeType;
                    if (reader.NodeType == XmlNodeType.Element)
                        if (reader.Name == "infNFe")
                        {
                            reader.MoveToAttribute("Id");
                            MessageBox.Show(reader.Value.ToString());
                        }

    "

    Obrigado :)

    • Marcado como Resposta MoluskoRP segunda-feira, 4 de junho de 2012 15:49
    segunda-feira, 4 de junho de 2012 15:40