Usuário com melhor resposta
Recuperar List Objeto, e armazenar em outra List

Pergunta
-
Olá <g class="gr_ gr_7 gr-alert gr_spell gr_inline_cards gr_disable_anim_appear ContextualSpelling ins-del multiReplace" data-gr-id="7" id="7">pessoal</g>!
Talvez a resposta esteja bem na minha frente, mas não estou conseguindo enxergar a solução. é o seguinte:
eu possuo esse metodo ai abaixo onde eu recupero uma lista de NosXml, percorro cada nó navego pelos Elements e adiciono em itens
var itens = new List<Item>();
var itemXml = SelecionarListadeNos(xml.DocumentElement, "//ITENS");
foreach (XmlElement dadosItem in itemXml)
foreach (XmlElement i in dadosItem)
{
var item = new Item(RecuperarInteiroXml(i, "ID"));
item.Ordem = RecuperarInteiroXml(i, "ORDEM");
item.Grupo = RecuperarTextoXml(i, "GRUPO");
item.Descricao = RecuperarTextoXml(i, "DESCRICAO");
itens.Add(item);
}aqui nesse metodo eu faço a mesma coisa para recuperar e armazenar.
var disciplinas = new List<Disciplina>();
if (xml != null)
{
var disciplinaXml = SelecionarListadeNos(xml.DocumentElement, "//DISCIPLINAS");
foreach (XmlElement dadosDisciplina in disciplinaXml)
{
foreach (XmlElement item in dadosDisciplina)
{
var disciplina = new Disciplina(RecuperarInteiroXml(item, "ID"));
disciplina.Tipo = RecuperarTextoXml(item, "TIPO");
disciplina.CodigoArea = RecuperarInteiroXml(item, "CODIGOAREA");
disciplina.Nome = RecuperarTextoXml(item, "NOME");
disciplina.ValidarNotas = RecuperarBool(item, "VALIDARNOTAS");
disciplina.CargaHoraria = RecuperarInteiroXml(item, "CARGAHORARIA");
disciplina.ListarItensDisciplina = RecuperaListadeItens(dadosDisciplina);
disciplinas.Add(disciplina);
}PS.: como eu faço para além de invocar o metodo recuperar ITENS, e armazenar dentro de minha Lista de Disciplinas, onde cada disciplina possue uma coleção de itens. Ex: disci 1, possue 5 itens, disci 2, possue 5 itens. etc..
Respostas
-
Bom dia, Sandro Developer. Tudo bem?
Conseguiu o que precisava? Se ainda não, o que falta?Resposta: olá! consegui sim, tive que mudar algumas coisas no código, a idéia do nosso colega Juliano foi massa, mas não cheguei aproveita-lá.
modifiquei essa linha (var itemXml = SelecionarListadeNos(xml.DocumentElement, "//ITENS");)
para essa abaixo, basicamente foi isso.
var itemXml = SelecionarListadeNos(node as XmlElement, "ITENS/ITEM");
Atenciosamente,
Filipe B de Castro
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.
- Marcado como Resposta Sandro Developer terça-feira, 20 de fevereiro de 2018 11:25
Todas as Respostas
-
Sandro,
Não deu pra entender a dúvida direito. O que está acontecendo de problema ou está faltando no código?
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
-
-
Mas qual é sua dúvida nesta parte? Não sabe selecionar uma parte do XML? Caso sim, como é o XML? Qual é a parte que precisa selecionar?
Uma coisa que vi é que você faz dois loops para a mesma variável:
foreach (XmlElement dadosItem in itemXml) foreach (XmlElement i in dadosItem)
Faltou você indicar a propriedade que seja um array ou coleção. Ex:
foreach (XmlElement dadosItem in itemXml) foreach (XmlElement i in dadosItem.ChildNodes)
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
-
Mas qual é sua dúvida nesta parte? Não sabe selecionar uma parte do XML? Caso sim, como é o XML? Qual é a parte que precisa selecionar?
Uma coisa que vi é que você faz dois loops para a mesma variável:
foreach (XmlElement dadosItem in itemXml) foreach (XmlElement i in dadosItem)
Resposta: Sim, eu fiz pois uma é para ler os Nos "Raiz" o outro entra nesse "NoRaiz" e ler
os Elements, ai eu instancio o Item recuperando o ID,ORDEM, GRUPO, DESCRICAO
Faltou você indicar a propriedade que seja um array ou coleção. Ex:
foreach (XmlElement dadosItem in itemXml) foreach (XmlElement i in dadosItem.ChildNodes)
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
-
Bom dia, Sandro Developer. Tudo bem?
Conseguiu o que precisava? Se ainda não, o que falta?
Atenciosamente,Filipe B de Castro
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.
-
Bom dia, Sandro Developer. Tudo bem?
Conseguiu o que precisava? Se ainda não, o que falta?Resposta: olá! consegui sim, tive que mudar algumas coisas no código, a idéia do nosso colega Juliano foi massa, mas não cheguei aproveita-lá.
modifiquei essa linha (var itemXml = SelecionarListadeNos(xml.DocumentElement, "//ITENS");)
para essa abaixo, basicamente foi isso.
var itemXml = SelecionarListadeNos(node as XmlElement, "ITENS/ITEM");
Atenciosamente,
Filipe B de Castro
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.
- Marcado como Resposta Sandro Developer terça-feira, 20 de fevereiro de 2018 11:25