none
armazenar xml em objeto RRS feed

  • Pergunta

  • Galera será que conseguem me ajudar, preciso ler um xml somente alguns dados e armazenar em um objeto para depois fazer um conferencia, eu consegui ler o xml, os dados que preciso mas nao sei como incluir no objeto:

    exemplo do XML:

    <?xml version="1.0" encoding="UTF-8"?>
    -<nfeProc xmlns="http://www.??????br/nfe" versao="2.00">
      -<NFe xmlns="http://www.!!!!.br">
        -<infNFe versao="2.00" Id="NFe0000000000000000000000000000">
          +<ide>
            +<emit>
              -+<dest>
                --<det nItem="1">
                  -<prod>
                    <cProd>12344(D: 40.00%)</cProd>
                    <cEAN>1234567891234</cEAN>
                    <xProd>livro 1</xProd>
                    <NCM>49019900</NCM>
                    <CFOP>0000</CFOP>
                    <uCom>EX</uCom>
                    <qCom>15.0000</qCom>
                    <vUnCom>159.0000</vUnCom>
                    <vProd>2385.00</vProd>
                    <cEANTrib>1234567891234</cEANTrib>
                    <uTrib>KG</uTrib>
                    <qTrib>15.0000</qTrib>
                    <vUnTrib>159.0000</vUnTrib>
                    <vDesc>954.00</vDesc>
                    <indTot>1</indTot>
                  </prod>
                  +<imposto>
                  --</det>-<det nItem="2">
                   -<prod>
                    <cProd>12556 (D: 40.00%)</cProd>
                    <cEAN>9876543219876</cEAN>
                    <xProd>livro 2</xProd>
                    <NCM>49019900</NCM>
                    <CFOP>0000</CFOP>
                    <uCom>EX</uCom>
                    <qCom>20.0000</qCom>
                    <vUnCom>117.0000</vUnCom>
                    <vProd>2340.00</vProd>
                    <cEANTrib>9876543219876</cEANTrib>
                    <uTrib>KG</uTrib>
                    <qTrib>20.0000</qTrib>
                    <vUnTrib>117.0000</vUnTrib>
                    <vDesc>936.00</vDesc>
                    <indTot>1</indTot>
                  </prod>
                    +<imposto>
                    --</det>-<det nItem="3">

    essa é a classe objeto

     class DadosXml
        {
            public string Ean { get; set; }
            public int Quantidade { get; set; }
            public float PrecoTotal { get; set; }
            public float Desconto { get; set; }

        }

    consigo ler os dados assim:

            private void button1_Click(object sender, EventArgs e)
            {
                XmlTextReader reader = new XmlTextReader("objetos.xml");
                XmlNodeType type;
                DadosXml DadosXml = new DadosXml(); // objeto
                while (reader.Read())
                {
                    type = reader.NodeType;

                    if (type == XmlNodeType.Element)
                    {
                        if (reader.Name == "det nItem")
                        {
                            reader.Read();
                            textBox1.Text = reader.Value;
                        }
                        if (reader.Name == "cEAN")
                        {
                            reader.Read();
                            listBox1.Items.Add(reader.Value);
                            // a linha abaixo nao guarda o dado no objeto
                           // DadosXml.Ean = listBox1.Text.ToString();
                        }
                        if (reader.Name == "qCom")
                        {
                            reader.Read();
                            listBox2.Items.Add(reader.Value);
                        }
                        if (reader.Name == "vProd")
                        {
                            reader.Read();
                            listBox3.Items.Add(reader.Value);
                        }
                        if (reader.Name == "vDesc")
                        {
                            reader.Read();
                            listBox4.Items.Add(reader.Value);                        
                        }
                    }
                }
                reader.Close();
            }

    se puderem me ajudar como colocar os dados do xml no objeto agradeço.

    domingo, 21 de abril de 2013 02:50

Respostas

  • Vamos apenas acrescentar o objeto no metodo click

    dessa forma :

       private void button1_Click(object sender, EventArgs e)
             {
    
    DadosXml objXML = new DadosXml();
     // Aqui inicilizo a classe
                 XmlTextReader reader = new XmlTextReader("objetos.xml");
                 XmlNodeType type;
                 DadosXml DadosXml = new DadosXml(); // objeto
                 while (reader.Read())
                 {
                     type = reader.NodeType;
     
                    if (type == XmlNodeType.Element)
                     {
                         if (reader.Name == "det nItem")
                         {
                             reader.Read();
                             textBox1.Text  = reader.Value;
                         }
                         if (reader.Name == "cEAN")
                         {
                             reader.Read();
                             listBox1.Items.Add(reader.Value);
                             // a linha abaixo nao guarda o dado no objeto
                            // DadosXml.Ean  = listBox1.Text.ToString();
    
       objXML.Ean = reader.Value;
                         }
                         if (reader.Name == "qCom")
                         {
                             reader.Read();
                             listBox2.Items.Add(reader.Value);
    
                             objXML.Quantidade = Convert.ToInt32(reader.Value);
                         }
                         if (reader.Name == "vProd")
                         {
                             reader.Read();
                             objXML.PrecoTotal = Convert.ToDouble(reader.Value);
                             listBox3.Items.Add(reader.Value);
                         }
                         if (reader.Name == "vDesc")
                         {
                             reader.Read();
                             objXML.Desconto = 
    Convert.ToDouble(reader.Value);
                             listBox4.Items.Add(reader.Value);                        
                         }
                     }
                 }
                 reader.Close();
    
    
              // Sua classe DadosXml está preenchida agora
    
              // objXML.Ean virá com Ean por exemplo 
    
             }
    Espero ter ajudado e não esqueça de marcar como respostar se lhe serviu.

    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br

    • Sugerido como Resposta Vitor Mendes sexta-feira, 26 de abril de 2013 19:04
    • Marcado como Resposta Rystiom domingo, 28 de abril de 2013 01:04
    quinta-feira, 25 de abril de 2013 19:41

Todas as Respostas

  • Vamos apenas acrescentar o objeto no metodo click

    dessa forma :

       private void button1_Click(object sender, EventArgs e)
             {
    
    DadosXml objXML = new DadosXml();
     // Aqui inicilizo a classe
                 XmlTextReader reader = new XmlTextReader("objetos.xml");
                 XmlNodeType type;
                 DadosXml DadosXml = new DadosXml(); // objeto
                 while (reader.Read())
                 {
                     type = reader.NodeType;
     
                    if (type == XmlNodeType.Element)
                     {
                         if (reader.Name == "det nItem")
                         {
                             reader.Read();
                             textBox1.Text  = reader.Value;
                         }
                         if (reader.Name == "cEAN")
                         {
                             reader.Read();
                             listBox1.Items.Add(reader.Value);
                             // a linha abaixo nao guarda o dado no objeto
                            // DadosXml.Ean  = listBox1.Text.ToString();
    
       objXML.Ean = reader.Value;
                         }
                         if (reader.Name == "qCom")
                         {
                             reader.Read();
                             listBox2.Items.Add(reader.Value);
    
                             objXML.Quantidade = Convert.ToInt32(reader.Value);
                         }
                         if (reader.Name == "vProd")
                         {
                             reader.Read();
                             objXML.PrecoTotal = Convert.ToDouble(reader.Value);
                             listBox3.Items.Add(reader.Value);
                         }
                         if (reader.Name == "vDesc")
                         {
                             reader.Read();
                             objXML.Desconto = 
    Convert.ToDouble(reader.Value);
                             listBox4.Items.Add(reader.Value);                        
                         }
                     }
                 }
                 reader.Close();
    
    
              // Sua classe DadosXml está preenchida agora
    
              // objXML.Ean virá com Ean por exemplo 
    
             }
    Espero ter ajudado e não esqueça de marcar como respostar se lhe serviu.

    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br

    • Sugerido como Resposta Vitor Mendes sexta-feira, 26 de abril de 2013 19:04
    • Marcado como Resposta Rystiom domingo, 28 de abril de 2013 01:04
    quinta-feira, 25 de abril de 2013 19:41
  • Valeu Davi, obrigado pela ajuda, resolveu perfeitamente.


    • Editado Rystiom domingo, 28 de abril de 2013 01:04
    domingo, 28 de abril de 2013 01:04