Usuário com melhor resposta
armazenar xml em objeto

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.
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
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
-