Usuário com melhor resposta
Ler o XML de um webservice

Pergunta
-
Boa noite caros colegas,
Eu tenho um webservice que retorna o seguinte XML:
<GetServers xmlns="http://teste.teste.com.br/WebServices/"> <Servidores xmlns=""> <Servidor Nome="srv1" situacao="OK"> </Servidores> </GetServers >
Esse retorno é feito em uma variável do tipo XElement. Eu já vasculhei meio mundo atraz de uma forma de ler as informações do arquivo e nada.
Por favor alguém pode me ajudar?
Respostas
-
Amigo,
Fiz um exemplo utilizando linq, veja se adequa a sua necessidade
string xmlContext = @"<?xml version=""1.0"" encoding=""UTF-8""?> <GetServers xmlns=""http://teste.teste.com.br/WebServices/""> <Servidores xmlns=""""> <Servidor nome=""srv1"" Situacao=""OK"" /> </Servidores> </GetServers>"; XDocument xd = XDocument.Parse(xmlContext); var result = from tag in xd.Descendants("Servidores") .Descendants("Servidor") select new { serverName = tag.Attribute("nome").Value , serverStatus = tag.Attribute("Situacao").Value }; foreach (var item in result) { Console.WriteLine( String.Format("Nome do Servidor: {0}\nSituação: {1}", item.serverName , item.serverStatus ) ); } Console.Read();
se a resposta foi útil, classifique :)
ate mais,
Rodrigo Soria- Marcado como Resposta Marcos H. Silva terça-feira, 4 de setembro de 2012 21:36
Todas as Respostas
-
Amigo,
Bem provavel que voce nao estea conseguindo ler as tag pelo fato do xml ter um namespace, no seu caso e o "http://teste.teste.com.br/WebServices/".
Abaixo segue um exemplo que respondi algum tempo atras sobre exatamente esse problema de ler tags.
Veja se lhe ajuda.
se a resposta foi útil, classifique :)
ate mais,
Rodrigo Soria -
Oi Rodrigo,
Cara seguinte, acho que faltou uma parte do XML, esse exemplo bacana que você me passou não funcionou.
<GetServer xmlns="http://teste.teste.com.br/WebServices/"> <Servidores xmlns=""> <Servidor nome="srv1" Situacao="OK" /> </Servidores> </GetServers>
Tentei altera esse seu exemplo mas ainda sim não deu certo. Eu trabalho com desenvolvimento desde 2005, mas com o Delphi, então algumas coisas do C# ainda não meio obscuras para mim.
Fiz um código fixando o XML para fazer um teste... e ainda sim não funcionou!private void analistaRetornoGetServers(object obj, webServiceServers.GetServersCompletedEventArgs e) string xmlSRV = @"<?xml version=""1.0"" encoding=""UTF-8""?> <GetServers xmlns=""http://teste.teste.com.br/WebServices/""> <Servers xmlns=""""> <Server nome=""srv1"" Situacao=""OK"" /> </Server> </Servers>"; XDocument xmlDoc = XDocument.Parse(xmlSRV); XNamespace xn = "http://teste.teste.com.br/WebServices/"; var valorElemento = xmlDoc.Root.Elements().Where(n => n.Name == (xn + "Situacao")).First().Value; MessageBox.Show(valorElemento); }
- Editado Marcos H. Silva terça-feira, 4 de setembro de 2012 01:20
-
Amigo,
Fiz um exemplo utilizando linq, veja se adequa a sua necessidade
string xmlContext = @"<?xml version=""1.0"" encoding=""UTF-8""?> <GetServers xmlns=""http://teste.teste.com.br/WebServices/""> <Servidores xmlns=""""> <Servidor nome=""srv1"" Situacao=""OK"" /> </Servidores> </GetServers>"; XDocument xd = XDocument.Parse(xmlContext); var result = from tag in xd.Descendants("Servidores") .Descendants("Servidor") select new { serverName = tag.Attribute("nome").Value , serverStatus = tag.Attribute("Situacao").Value }; foreach (var item in result) { Console.WriteLine( String.Format("Nome do Servidor: {0}\nSituação: {1}", item.serverName , item.serverStatus ) ); } Console.Read();
se a resposta foi útil, classifique :)
ate mais,
Rodrigo Soria- Marcado como Resposta Marcos H. Silva terça-feira, 4 de setembro de 2012 21:36
-