Usuário com melhor resposta
Leitura XML

Pergunta
-
Estou precisando de uma ajuda , estou lendo o XML abaixo so que só estou conseguindo ler os dados que estão dentro da TAG Silo os que estão dentro de Pendulos que pertence a Silo não consigo.
<?xml version="1.0" encoding="utf-16"?> <Leitura xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <silos> <Silo> <ID>1</ID> <data>120716</data> <hora>0931</hora> <umidade>061</umidade> <temperatura>21</temperatura> <pendulos> <Pendulo> <ID_P>001</ID_P> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>25</S> <S>27</S> <S>27</S> <S>27</S> <S>25</S> <S>25</S> <S>25</S> <S>27</S> <S>27</S> <S /> </Pendulo> </pendulos> </Silo> </silos> </Leitura>
código fonte
XDocument doc = XDocument.Load((CaminhoDadosXML(caminho) + @"Dados\120716.xml")); var prods = from p in doc.Descendants("silos") select new { idsilo = p.Element("ID").Value, data = p.Element("data").Value, hora = p.Element("hora").Value, umidade = p.Element("umidade").Value, temperatura = p.Element("temperatura").Value, idpendulo = p.Element("ID_P").Value sensor = p.Element("S").Value }; foreach (var p in prods) { lbProdutos.Items.Add("Silo: " + p.idsilo + ""); lbProdutos.Items.Add("Data: " + p.data + ""); lbProdutos.Items.Add("Hora: " + p.hora + ""); lbProdutos.Items.Add("Umidade: " + p.umidade + ""); lbProdutos.Items.Add("Temperatura: " + p.temperatura + ""); lbProdutos.Items.Add("Pendulo: " + p.idpendulo + ""); lbProdutos.Items.Add("sensor: " + p.sensor + ""); } }
- Editado CLPSimens quinta-feira, 14 de julho de 2016 14:55
Respostas
-
Boa noite,
Acredito que entendi sim, inclusive realizei o teste e deu certo. Segue o código na integra:
Carregando e lendo o Objeto
XDocument doc = XDocument.Load((CaminhoDadosXML(caminho) + @"Dados\120716.xml")); Leitura leitura = FromXmlString(doc.InnerXml.ToString()); int idsilo = leitura.silos.Silo.ID; string data = leitura.silos.Silo.data; string hora = leitura.silos.Silo.hora; string umidade = leitura.silos.Silo.umidade; string temperatura = leitura.silos.Silo.temperatura; int idpendulo = leitura.silos.Silo.pendulos.Pendulo.ID_P; //Percorrer os "S" foreach (var item in leitura.silos.Silo.pendulos.Pendulo.S) { Console.WriteLine(item.ToString()); }
Método para carregar objeto com a string "xml"
public Leitura FromXmlString(string xmlString) { var reader = new StringReader(xmlString); var serializer = new XmlSerializer(typeof(Leitura)); var instance = (Leitura)serializer.Deserialize(reader); return instance; }
Classe criada a partir do XML:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WindowsFormsApplication { /// <remarks/> [System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)] public partial class Leitura { private LeituraSilos silosField; /// <remarks/> public LeituraSilos silos { get { return this.silosField; } set { this.silosField = value; } } } /// <remarks/> [System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilos { private LeituraSilosSilo siloField; /// <remarks/> public LeituraSilosSilo Silo { get { return this.siloField; } set { this.siloField = value; } } } /// <remarks/> [System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilosSilo { private int idField; private string dataField; private string horaField; private string umidadeField; private string temperaturaField; private LeituraSilosSiloPendulos pendulosField; /// <remarks/> public int ID { get { return this.idField; } set { this.idField = value; } } /// <remarks/> public string data { get { return this.dataField; } set { this.dataField = value; } } /// <remarks/> public string hora { get { return this.horaField; } set { this.horaField = value; } } /// <remarks/> public string umidade { get { return this.umidadeField; } set { this.umidadeField = value; } } /// <remarks/> public string temperatura { get { return this.temperaturaField; } set { this.temperaturaField = value; } } /// <remarks/> public LeituraSilosSiloPendulos pendulos { get { return this.pendulosField; } set { this.pendulosField = value; } } } /// <remarks/> [System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilosSiloPendulos { private LeituraSilosSiloPendulosPendulo penduloField; /// <remarks/> public LeituraSilosSiloPendulosPendulo Pendulo { get { return this.penduloField; } set { this.penduloField = value; } } } /// <remarks/> [System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilosSiloPendulosPendulo { private int iD_PField; private string[] sField; /// <remarks/> public int ID_P { get { return this.iD_PField; } set { this.iD_PField = value; } } /// <remarks/> [System.Xml.Serialization.XmlElementAttribute("S")] public string[] S { get { return this.sField; } set { this.sField = value; } } } }
Espero ter ajudado!
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
-
Bom dia,
O código esta completo amigo, fiz apenas uma correção agora.
Se você copiar e colar ja vai funcionar.
1 - Crie a classe "Leitura"
2 - Crie o método que carrega o Objeto com os dados do XML "FromXmlString"
3 - Só percorrer os dados do objetoObservação: O código foi testado diversas vezes ante de ser postado.
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
- Marcado como Resposta Robson William SilvaModerator quarta-feira, 20 de julho de 2016 15:06
-
Boa tarde,
Troque por:
Leitura leitura = FromXmlString(doc.ToString());
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
- Marcado como Resposta CLPSimens quarta-feira, 20 de julho de 2016 20:15
-
Bom dia,
Amigo, segue a classe:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication { /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)] public partial class Leitura { private LeituraSilos silosField; /// <remarks/> public LeituraSilos silos { get { return this.silosField; } set { this.silosField = value; } } } /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilos { private LeituraSilosSilo[] siloField; private string[] textField; /// <remarks/> [System.Xml.Serialization.XmlElementAttribute("Silo")] public LeituraSilosSilo[] Silo { get { return this.siloField; } set { this.siloField = value; } } /// <remarks/> [System.Xml.Serialization.XmlTextAttribute()] public string[] Text { get { return this.textField; } set { this.textField = value; } } } /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilosSilo { private string idField; private string dataField; private string horaField; private string umidadeField; private string temperaturaField; private LeituraSilosSiloPendulos pendulosField; private string[] textField; /// <remarks/> public string ID { get { return this.idField; } set { this.idField = value; } } /// <remarks/> public string data { get { return this.dataField; } set { this.dataField = value; } } /// <remarks/> public string hora { get { return this.horaField; } set { this.horaField = value; } } /// <remarks/> public string umidade { get { return this.umidadeField; } set { this.umidadeField = value; } } /// <remarks/> public string temperatura { get { return this.temperaturaField; } set { this.temperaturaField = value; } } /// <remarks/> public LeituraSilosSiloPendulos pendulos { get { return this.pendulosField; } set { this.pendulosField = value; } } /// <remarks/> [System.Xml.Serialization.XmlTextAttribute()] public string[] Text { get { return this.textField; } set { this.textField = value; } } } /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilosSiloPendulos { private LeituraSilosSiloPendulosPendulo[] penduloField; private string[] textField; /// <remarks/> [System.Xml.Serialization.XmlElementAttribute("Pendulo")] public LeituraSilosSiloPendulosPendulo[] Pendulo { get { return this.penduloField; } set { this.penduloField = value; } } /// <remarks/> [System.Xml.Serialization.XmlTextAttribute()] public string[] Text { get { return this.textField; } set { this.textField = value; } } } /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilosSiloPendulosPendulo { private string iD_PField; private string[] sField; /// <remarks/> public string ID_P { get { return this.iD_PField; } set { this.iD_PField = value; } } /// <remarks/> [System.Xml.Serialization.XmlElementAttribute("S")] public string[] S { get { return this.sField; } set { this.sField = value; } } } }
Carregando o objeto:
XDocument doc = XDocument.Load(@"D:\leitura.xml"); Leitura leitura = FromXmlString(doc.ToString());
Pronto amigo, com o objeto carregado você pode fazer qualquer coisa.
Qualquer dúvida, estou a disposição!Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
-
Bom dia,
Segue um exemplo:
Classe modelopublic class Silo { public string ID { get; set; } public string Data { get; set; } public string Hora { get; set; } public string Umidade { get; set; } public string Temperatura { get; set; } }
Consulta e preenchimento do DataGridView:
XDocument doc = XDocument.Load(@"D:\leitura.xml"); Leitura leitura = FromXmlString(doc.ToString()); var silos = (from s in leitura.silos.Silo select new Silo() { ID = s.ID, Data = string.Format("{0}/{1}/{2}", s.data.Substring(0, 2), s.data.Substring(2, 2), s.data.Substring(4)), Hora = s.hora, Temperatura = s.temperatura, Umidade = s.umidade }).ToList(); dataGridView1.DataSource = silos;
Espero ter ajudado!
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
-
A partir dos exemplos postados você pode fazer qualquer coisa.
O que precisa é você mentalizar como deseja fazer, pois você possui uma lista de silos, cada silo tem uma lista de Pendulos onde cada pendulo tem um id e uma lista de "S".
É lógico que pra você montar uma grid com os dados vai precisar estruturar a maneira que deseja, pois os "S" dentro do pendulo pode variar, dessa forma não bastaria você colocar o id em uma coluna e carregar os "S" em outras pois não possui uma quantidade física.
Mas se o que deseja é percorrer os Pendulos, (uma maneira simples) seria você percorrer (for) cada Silo e depois percorre o "S" de cada pendulo.Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
- Marcado como Resposta CLPSimens quinta-feira, 21 de julho de 2016 14:54
-
Boa tarde,
Segue um exemplo mais detalhado de como percorrer cada lista:
XDocument doc = XDocument.Load(@"D:\leitura.xml"); Leitura leitura = FromXmlString(doc.ToString()); var silos = leitura.silos.Silo.ToList(); //selecionando todos os silos foreach (var p in silos)//Percorre os silos { var pendulos = p.pendulos.Pendulo.ToList(); //selecionando todos os pendulos de cada silo foreach (var item in pendulos)//Percorre os pendulos de cada silo { var pendulosS = item.S;// Obtendo todos os "S" foreach (var s in pendulosS)//Percorrendo os "S" { Console.WriteLine(string.Format("ID: {0}\tData: {1}\tID_P: {2}, S: {3}", p.ID, p.data, item.ID_P, s) ); } } }
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
Todas as Respostas
-
Bom dia,
Você poderia criar uma classe com os atributos do xml e trabalhar com objetos:
Para gerar a classe, segue o seguinte procedimento:
- Copie o xml (string)
- Crie uma classe
- Remova "class nomeDaClasse{}", deixando só o namespace { }
- No Visual Studio, clique em Edit -> Paste Special -> Paste XML as ClassesPronto, a classe vai estar criada de acordo com o xml.
Para carregar o objeto com os dados do xml:
public NomeDaClasse FromXmlString(string xmlString) { var reader = new StringReader(xmlString); var serializer = new XmlSerializer(typeof(NomeDaClasse)); var instance = (NomeDaClasse)serializer.Deserialize(reader); return instance; }
Espero ter ajudado.
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
-
-
-
-
Boa tarde,
Isso acontece porque o <pendulo> não é filho de <silo> e sim de <pendulos>, neste caso você precisa pegar os filhos de <pendulos> também, adicionando uma instrução no seu select:
.Descendants("pendulos")
Segue link com exemplo:
http://stackoverflow.com/questions/19338296/accessing-nested-child-nodes
Att,
LeandroSe foi útil, marque como útil ou como resposta.
- Sugerido como Resposta Leandro Tozetto quinta-feira, 14 de julho de 2016 17:57
-
eu coloquei antes do select new ai ele me retorna esse erro
XDocument doc = XDocument.Load((CaminhoDadosXML(caminho) + @"Dados\120716.xml")); var prods = from p in doc.Descendants("silos").Descendants("pendulos") select new { idsilo = p.Element("ID").Value, data = p.Element("data").Value, hora = p.Element("hora").Value, umidade = p.Element("umidade").Value, temperatura = p.Element("temperatura").Value, idpendulo = p.Element("ID_P").Value, sensor = p.Element("S").Value }; foreach (var p in prods) { lbProdutos.Items.Add("Silo: " + p.idsilo + ""); lbProdutos.Items.Add("Data: " + p.data + ""); lbProdutos.Items.Add("Hora: " + p.hora + ""); lbProdutos.Items.Add("Umidade: " + p.umidade + ""); lbProdutos.Items.Add("Temperatura: " + p.temperatura + ""); lbProdutos.Items.Add("Pendulo: " + p.idpendulo + ""); lbProdutos.Items.Add("sensor: " + p.sensor + ""); }
ele me retorna esse erro : Referência de objeto não definida para uma instância de um objeto.
-
-
Boa tarde CLPSimens,
é possível que não está funcionando porque você ainda precisa adicionar o namespace "http://www.lge.com/ddc"
XNamespace ns = "http://www.lge.com/ddc"; //... .Descendants("pêndulos")
Atenciosamente,Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Boa noite,
Acredito que entendi sim, inclusive realizei o teste e deu certo. Segue o código na integra:
Carregando e lendo o Objeto
XDocument doc = XDocument.Load((CaminhoDadosXML(caminho) + @"Dados\120716.xml")); Leitura leitura = FromXmlString(doc.InnerXml.ToString()); int idsilo = leitura.silos.Silo.ID; string data = leitura.silos.Silo.data; string hora = leitura.silos.Silo.hora; string umidade = leitura.silos.Silo.umidade; string temperatura = leitura.silos.Silo.temperatura; int idpendulo = leitura.silos.Silo.pendulos.Pendulo.ID_P; //Percorrer os "S" foreach (var item in leitura.silos.Silo.pendulos.Pendulo.S) { Console.WriteLine(item.ToString()); }
Método para carregar objeto com a string "xml"
public Leitura FromXmlString(string xmlString) { var reader = new StringReader(xmlString); var serializer = new XmlSerializer(typeof(Leitura)); var instance = (Leitura)serializer.Deserialize(reader); return instance; }
Classe criada a partir do XML:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WindowsFormsApplication { /// <remarks/> [System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)] public partial class Leitura { private LeituraSilos silosField; /// <remarks/> public LeituraSilos silos { get { return this.silosField; } set { this.silosField = value; } } } /// <remarks/> [System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilos { private LeituraSilosSilo siloField; /// <remarks/> public LeituraSilosSilo Silo { get { return this.siloField; } set { this.siloField = value; } } } /// <remarks/> [System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilosSilo { private int idField; private string dataField; private string horaField; private string umidadeField; private string temperaturaField; private LeituraSilosSiloPendulos pendulosField; /// <remarks/> public int ID { get { return this.idField; } set { this.idField = value; } } /// <remarks/> public string data { get { return this.dataField; } set { this.dataField = value; } } /// <remarks/> public string hora { get { return this.horaField; } set { this.horaField = value; } } /// <remarks/> public string umidade { get { return this.umidadeField; } set { this.umidadeField = value; } } /// <remarks/> public string temperatura { get { return this.temperaturaField; } set { this.temperaturaField = value; } } /// <remarks/> public LeituraSilosSiloPendulos pendulos { get { return this.pendulosField; } set { this.pendulosField = value; } } } /// <remarks/> [System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilosSiloPendulos { private LeituraSilosSiloPendulosPendulo penduloField; /// <remarks/> public LeituraSilosSiloPendulosPendulo Pendulo { get { return this.penduloField; } set { this.penduloField = value; } } } /// <remarks/> [System.SerializableAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilosSiloPendulosPendulo { private int iD_PField; private string[] sField; /// <remarks/> public int ID_P { get { return this.iD_PField; } set { this.iD_PField = value; } } /// <remarks/> [System.Xml.Serialization.XmlElementAttribute("S")] public string[] S { get { return this.sField; } set { this.sField = value; } } } }
Espero ter ajudado!
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
-
-
Obrigado robson , eu testei assim
XNamespace ns = "http://www.lge.com/ddc"; XDocument doc = XDocument.Load((CaminhoDadosXML(caminho) + @"Dados\120716.xml")); List<Silo> silos = new List<Silo>(); { Silo o = new Silo(); var prods = from p in doc.Descendants("Silo").Descendants(ns + "pendulos")
mais nao deu certo
-
Bom dia,
O código esta completo amigo, fiz apenas uma correção agora.
Se você copiar e colar ja vai funcionar.
1 - Crie a classe "Leitura"
2 - Crie o método que carrega o Objeto com os dados do XML "FromXmlString"
3 - Só percorrer os dados do objetoObservação: O código foi testado diversas vezes ante de ser postado.
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
- Marcado como Resposta Robson William SilvaModerator quarta-feira, 20 de julho de 2016 15:06
-
Silvaney o console ta me retornando esse erro
Error 1 'System.Xml.Linq.XDocument' does not contain a definition for 'InnerXml' and no extension method 'InnerXml' accepting a first argument of type 'System.Xml.Linq.XDocument' could be found (are you missing a using directive or an assembly reference? Form1.cs 301 49 XML_BD
-
Boa tarde,
Troque por:
Leitura leitura = FromXmlString(doc.ToString());
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
- Marcado como Resposta CLPSimens quarta-feira, 20 de julho de 2016 20:15
-
ele ta lendo apenas os sensores dos pendulos , e esta lendo apenas a primeira informaçao o xml conte mais de um silo ali coloquei apenas um como exemplo e se eu quiser ler toda informaçao
- Editado CLPSimens quarta-feira, 20 de julho de 2016 19:49
-
Boa tarde,
Amigo, poste o XML completo. A solução postada foi baseado no xml que você postou.
Poste o xml e aponte quais dados você precisa obter dentro do xml.Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
-
<?xml version="1.0" encoding="UTF-16"?> -<Leitura xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> -<silos> -<Silo> <ID>1</ID> <data>120716</data> <hora>0931</hora> <umidade>061</umidade> <temperatura>21</temperatura> -<pendulos> -<Pendulo> <ID_P>001</ID_P> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>25</S> <S>27</S> <S>27</S> <S>27</S> <S>25</S> <S>25</S> <S>25</S> <S>27</S> <S>27</S> <S/> </Pendulo> -<Pendulo> <ID_P>002</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>24</S> <S>24</S> <S>24</S> <S>25</S> <S>24</S> <S>24</S> <S>24</S> <S/> </Pendulo> -<Pendulo> <ID_P>003</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>004</ID_P> <S>23</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>23</S> <S>25</S> <S>23</S> <S>25</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>005</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> </pendulos> </Silo> -<Silo> <ID>2</ID> <data>010716</data> <hora>1100</hora> <umidade>052</umidade> <temperatura>23</temperatura> -<pendulos> -<Pendulo> <ID_P>001</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>002</ID_P> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>25</S> <S>25</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>25</S> <S>23</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>003</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>004</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>23</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>23</S> <S>25</S> <S>23</S> <S>25</S> <S>25</S> <S>23</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>005</ID_P> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>23</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>006</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> </pendulos> </Silo> -<Silo> <ID>3</ID> <data>120716</data> <hora>0959</hora> <umidade>067</umidade> <temperatura>22</temperatura> -<pendulos> -<Pendulo> <ID_P>001</ID_P> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>25</S> <S>27</S> <S>27</S> <S>27</S> <S>25</S> <S>25</S> <S>25</S> <S>27</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>002</ID_P> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S/> </Pendulo> -<Pendulo> <ID_P>003</ID_P> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S/> </Pendulo> -<Pendulo> <ID_P>004</ID_P> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S/> </Pendulo> -<Pendulo> <ID_P>005</ID_P> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>28</S> <S/> </Pendulo> -<Pendulo> <ID_P>006</ID_P> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>27</S> <S>28</S> <S>27</S> <S>28</S> <S>27</S> <S>27</S> <S>28</S> <S/> </Pendulo> -<Pendulo> <ID_P>007</ID_P> <S>28</S> <S>27</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S>27</S> <S>28</S> <S>27</S> <S>28</S> <S>28</S> <S>28</S> <S>28</S> <S/> </Pendulo> -<Pendulo> <ID_P>008</ID_P> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S/> </Pendulo> -<Pendulo> <ID_P>009</ID_P> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S>27</S> <S/> </Pendulo> </pendulos> </Silo> -<Silo> <ID>4</ID> <data>080716</data> <hora>1540</hora> <umidade>045</umidade> <temperatura>21</temperatura> -<pendulos> -<Pendulo> <ID_P>001</ID_P> <S>22</S> <S>22</S> <S>22</S> <S>22</S> <S>22</S> <S>22</S> <S>22</S> <S>22</S> <S>22</S> <S>22</S> <S>22</S> <S>22</S> <S>22</S> <S>22</S> <S>22</S> <S>22</S> <S/> </Pendulo> </pendulos> </Silo> -<Silo> <ID>5</ID> <data>120716</data> <hora>1002</hora> <umidade>067</umidade> <temperatura>22</temperatura> -<pendulos> -<Pendulo> <ID_P>001</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>23</S> <S>23</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>002</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>003</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>004</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>005</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>006</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>007</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>008</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>009</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> </pendulos> </Silo> -<Silo> <ID>6</ID> <data>120716</data> <hora>1005</hora> <umidade>067</umidade> <temperatura>22</temperatura> -<pendulos> -<Pendulo> <ID_P>001</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>002</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>003</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>26</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>004</ID_P> <S>25</S> <S>25</S> <S>26</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>005</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>26</S> <S>25</S> <S>25</S> <S>26</S> <S>25</S> <S>26</S> <S>25</S> <S>26</S> <S>25</S> <S>25</S> <S>25</S> <S>26</S> <S/> </Pendulo> -<Pendulo> <ID_P>006</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>007</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>23</S> <S>25</S> <S>25</S> <S>25</S> <S>23</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>008</ID_P> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>23</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S>25</S> <S/> </Pendulo> -<Pendulo> <ID_P>009</ID_P> <S>25</S> <S>26</S> <S>25</S> <S>26</S> <S>26</S> <S>26</S> <S>26</S> <S>26</S> <S>26</S> <S>26</S> <S>26</S> <S>26</S> <S>26</S> <S>26</S> <S>26</S> <S>26</S> <S/> </Pendulo> </pendulos> </Silo> </silos> </Leitura>
eu quero a estrutura igual ta no xml ,depois vou exibir item por item em textbox
mais se vc me ajuda com receber e estruturar esses dados ta ótimo depois me viro
- Editado CLPSimens quarta-feira, 20 de julho de 2016 20:11
-
Bom dia,
Amigo, segue a classe:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication { /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)] public partial class Leitura { private LeituraSilos silosField; /// <remarks/> public LeituraSilos silos { get { return this.silosField; } set { this.silosField = value; } } } /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilos { private LeituraSilosSilo[] siloField; private string[] textField; /// <remarks/> [System.Xml.Serialization.XmlElementAttribute("Silo")] public LeituraSilosSilo[] Silo { get { return this.siloField; } set { this.siloField = value; } } /// <remarks/> [System.Xml.Serialization.XmlTextAttribute()] public string[] Text { get { return this.textField; } set { this.textField = value; } } } /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilosSilo { private string idField; private string dataField; private string horaField; private string umidadeField; private string temperaturaField; private LeituraSilosSiloPendulos pendulosField; private string[] textField; /// <remarks/> public string ID { get { return this.idField; } set { this.idField = value; } } /// <remarks/> public string data { get { return this.dataField; } set { this.dataField = value; } } /// <remarks/> public string hora { get { return this.horaField; } set { this.horaField = value; } } /// <remarks/> public string umidade { get { return this.umidadeField; } set { this.umidadeField = value; } } /// <remarks/> public string temperatura { get { return this.temperaturaField; } set { this.temperaturaField = value; } } /// <remarks/> public LeituraSilosSiloPendulos pendulos { get { return this.pendulosField; } set { this.pendulosField = value; } } /// <remarks/> [System.Xml.Serialization.XmlTextAttribute()] public string[] Text { get { return this.textField; } set { this.textField = value; } } } /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilosSiloPendulos { private LeituraSilosSiloPendulosPendulo[] penduloField; private string[] textField; /// <remarks/> [System.Xml.Serialization.XmlElementAttribute("Pendulo")] public LeituraSilosSiloPendulosPendulo[] Pendulo { get { return this.penduloField; } set { this.penduloField = value; } } /// <remarks/> [System.Xml.Serialization.XmlTextAttribute()] public string[] Text { get { return this.textField; } set { this.textField = value; } } } /// <remarks/> [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] public partial class LeituraSilosSiloPendulosPendulo { private string iD_PField; private string[] sField; /// <remarks/> public string ID_P { get { return this.iD_PField; } set { this.iD_PField = value; } } /// <remarks/> [System.Xml.Serialization.XmlElementAttribute("S")] public string[] S { get { return this.sField; } set { this.sField = value; } } } }
Carregando o objeto:
XDocument doc = XDocument.Load(@"D:\leitura.xml"); Leitura leitura = FromXmlString(doc.ToString());
Pronto amigo, com o objeto carregado você pode fazer qualquer coisa.
Qualquer dúvida, estou a disposição!Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
-
-
Bom dia,
Segue um exemplo:
Classe modelopublic class Silo { public string ID { get; set; } public string Data { get; set; } public string Hora { get; set; } public string Umidade { get; set; } public string Temperatura { get; set; } }
Consulta e preenchimento do DataGridView:
XDocument doc = XDocument.Load(@"D:\leitura.xml"); Leitura leitura = FromXmlString(doc.ToString()); var silos = (from s in leitura.silos.Silo select new Silo() { ID = s.ID, Data = string.Format("{0}/{1}/{2}", s.data.Substring(0, 2), s.data.Substring(2, 2), s.data.Substring(4)), Hora = s.hora, Temperatura = s.temperatura, Umidade = s.umidade }).ToList(); dataGridView1.DataSource = silos;
Espero ter ajudado!
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
-
-
A partir dos exemplos postados você pode fazer qualquer coisa.
O que precisa é você mentalizar como deseja fazer, pois você possui uma lista de silos, cada silo tem uma lista de Pendulos onde cada pendulo tem um id e uma lista de "S".
É lógico que pra você montar uma grid com os dados vai precisar estruturar a maneira que deseja, pois os "S" dentro do pendulo pode variar, dessa forma não bastaria você colocar o id em uma coluna e carregar os "S" em outras pois não possui uma quantidade física.
Mas se o que deseja é percorrer os Pendulos, (uma maneira simples) seria você percorrer (for) cada Silo e depois percorre o "S" de cada pendulo.Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
- Marcado como Resposta CLPSimens quinta-feira, 21 de julho de 2016 14:54
-
-
-
Boa tarde,
Segue um exemplo mais detalhado de como percorrer cada lista:
XDocument doc = XDocument.Load(@"D:\leitura.xml"); Leitura leitura = FromXmlString(doc.ToString()); var silos = leitura.silos.Silo.ToList(); //selecionando todos os silos foreach (var p in silos)//Percorre os silos { var pendulos = p.pendulos.Pendulo.ToList(); //selecionando todos os pendulos de cada silo foreach (var item in pendulos)//Percorre os pendulos de cada silo { var pendulosS = item.S;// Obtendo todos os "S" foreach (var s in pendulosS)//Percorrendo os "S" { Console.WriteLine(string.Format("ID: {0}\tData: {1}\tID_P: {2}, S: {3}", p.ID, p.data, item.ID_P, s) ); } } }
Att,
Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.
-
Boa tarde CLPSimens,
Obrigado por sua participação no Fórum MSDN.
Essa thread está se tornando muito longa e pode ficar desconfortável para outros leitores.
Peço que por gentileza não reabra mais essa thread. Caso ainda tenha dúvidas, se possível, por gentileza, abra outro tópico.
Atenciosamente.
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Editado Robson William SilvaModerator sexta-feira, 22 de julho de 2016 17:17 error de digitação