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