Manipular XML no .NET
Boa tarde Pessoal.
Estou com um problema em obter dados em XML.
Consegui realizar a leitura das informações por um Loop utilizando o XmlTextReader, mas acredito que tenha uma forma de fazer algo mais genérico como temos em Json que é gerar um método que aceite qualquer classe, transformando um XML na classe solicitada.
Fiz um exemplo do que estou tentando fazer e coloquei no GIT.
Se alguém puder me passar um exemplo ou artigo vai me ajudar muito.
Segue o link com o projeto de teste.
[url:descricao=Código completo]https://github.com/phsdeveloper/DotNet_ParseXML[/url]
Estou com um problema em obter dados em XML.
Consegui realizar a leitura das informações por um Loop utilizando o XmlTextReader, mas acredito que tenha uma forma de fazer algo mais genérico como temos em Json que é gerar um método que aceite qualquer classe, transformando um XML na classe solicitada.
Fiz um exemplo do que estou tentando fazer e coloquei no GIT.
Se alguém puder me passar um exemplo ou artigo vai me ajudar muito.
Segue o link com o projeto de teste.
[url:descricao=Código completo]https://github.com/phsdeveloper/DotNet_ParseXML[/url]
private void MTD_LerXML_01() { string caminhoArquivo = App_Components.Utils.MTD_ObterCaminhoArquivo(cbo_Arquivos.Text); System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader(caminhoArquivo); System.Text.StringBuilder stb_dados = new StringBuilder(); while (reader.Read()) { switch (reader.NodeType) { case System.Xml.XmlNodeType.None: stb_dados.AppendFormat("Tipo: None Name = | Value = ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.Element: stb_dados.AppendFormat("Tipo: Element Name = | Value = ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.Attribute: stb_dados.AppendFormat("Tipo: Attribute Name = | Value = ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.Text: stb_dados.AppendFormat("Tipo: text Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.CDATA: stb_dados.AppendFormat("Tipo: CDATA Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.EntityReference: stb_dados.AppendFormat("Tipo: EntityReference Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.Entity: stb_dados.AppendFormat("Tipo: Entity Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.ProcessingInstruction: stb_dados.AppendFormat("Tipo: ProcessingInstruction Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.Comment: stb_dados.AppendFormat("Tipo: Comment Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.Document: stb_dados.AppendFormat("Tipo: Document Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.DocumentType: stb_dados.AppendFormat("Tipo: DocumentType Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.DocumentFragment: stb_dados.AppendFormat("Tipo: DocumentFragment Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.Notation: stb_dados.AppendFormat("Tipo: Notation Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.Whitespace: stb_dados.AppendFormat("Tipo: Whitespace Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.SignificantWhitespace: stb_dados.AppendFormat("Tipo: SignificantWhitespace Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.EndElement: stb_dados.AppendFormat("Tipo: EndElement Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.EndEntity: stb_dados.AppendFormat("Tipo: EndEntity Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; case System.Xml.XmlNodeType.XmlDeclaration: stb_dados.AppendFormat("Tipo: XmlDeclaration Name = | Value ", reader.Name, reader.Value); stb_dados.Append(Environment.NewLine); break; default: break; } } txt_saida.Text = stb_dados.ToString(); } private void MTD_XmlDocumento() { System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); string st_caminhoXML = App_Components.Utils.MTD_ObterCaminhoArquivo(cbo_Arquivos.Text); xmlDoc.Load(st_caminhoXML); string valor1 = xmlDoc.SelectSingleNode("Produto").ChildNodes[0].InnerText; string valor2 = xmlDoc.SelectSingleNode("Produto").ChildNodes[1].InnerText; string valor3 = xmlDoc.SelectSingleNode("Produto").ChildNodes[2].InnerText; txt_saida.Text = valor1 + Environment.NewLine + valor2 + Environment.NewLine + valor3; } private void MTD_ConvertForClass() { using (System.IO.TextReader reader = new System.IO.StringReader(App_Components.Utils.MTD_LerArquivoTexto(cbo_Arquivos.Text))) { System.Xml.Serialization.XmlSerializer serializer_ = new System.Xml.Serialization.XmlSerializer(typeof(Integracao.Produtos_Lista)); var lista = (Integracao.Produtos_Lista)serializer_.Deserialize(reader); if (lista != null) { if (lista.Produto == null) txt_saida.Text = "Não foi realizado o Deserialize do XML"; else txt_saida.Text = lista.Produto[0].departamentoId.ToString(); } else txt_saida.Text = "Não há valores na lista"; } }
Paulo Santos
Curtidas 0
Respostas
Daniella Gomes
03/05/2017
Olá Paulo, acredito que os conteúdos abaixo podem te ajudar a tirar essa dúvida:
Video - https://www.devmedia.com.br/serializando-objetos-em-xml-com-c/30971
Artigo https://www.devmedia.com.br/xdocument-manipulando-arquivos-xml-no-net/25112
Espero ter ajudado.
Video - https://www.devmedia.com.br/serializando-objetos-em-xml-com-c/30971
Artigo https://www.devmedia.com.br/xdocument-manipulando-arquivos-xml-no-net/25112
Espero ter ajudado.
GOSTEI 0