I'm trying to return the data from this xml:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<GerarNfseResposta xmlns="http://www.betha.com.br/e-nota-contribuinte-ws">
<ListaMensagemRetorno>
<MensagemRetorno>
<Codigo>00000</Codigo>
<Mensagem>00000 - O RPS 8964 da série 999 já foi informado em outra nota fiscal.</Mensagem>
</MensagemRetorno>
</ListaMensagemRetorno>
</GerarNfseResposta>
I'm trying to do it this way:
WebResponse webResponse = webRequest.GetResponse();
StreamReader rd = new StreamReader(webResponse.GetResponseStream());
soapResult = rd.ReadToEnd();
XmlDocument xmlResponse = new XmlDocument();
xmlResponse.LoadXml(soapResult);
XmlNode responseNode = xmlResponse.LastChild.LastChild.FirstChild;
XmlNamespaceManager ns = new XmlNamespaceManager(xmlResponse.NameTable);
ns.AddNamespace("ns2", "http://www.betha.com.br/e-nota-contribuinte-ws");
XmlNode codigo = xmlResponse.SelectSingleNode("//ns2:Codigo", ns);
XmlNode mensagem = xmlResponse.SelectSingleNode("//ns2:Mensagem", ns);
But the code and message always comes null.
I tried this way below:
string soapResult = string.Empty;
WebResponse webResponse = webRequest.GetResponse();
StreamReader rd = new StreamReader(webResponse.GetResponseStream());
soapResult = rd.ReadToEnd();
XmlDocument xmlResponse = new XmlDocument();
xmlResponse.LoadXml(soapResult);
XNamespace ns = XNamespace
.Get("http://www.betha.com.br/e-nota-contribuinte-ws");
soapResult = System.IO.File.ReadAllText(soapResult,
System.Text.Encoding.GetEncoding("ISO-8859-1"));
var xDoc = XDocument.Parse(soapResult)
.Descendants(ns + "ListaMensagemRetorno")
.Elements(ns + "MensagemRetorno")
.Select(x => new
{
Codigo = x.Element(ns + "Codigo")?.Value,
Mensagem = x.Element(ns + "Mensagem")?.Value
})
.ToList();
But it also was not valid, I tried to remove this line
soapResult = System.IO.File.ReadAllText(soapResult,
System.Text.Encoding.GetEncoding("ISO-8859-1"));
however comes null
I tried to get it this way too and it did not work:
System.Xml.XmlNode Gerar = xmlResponse.SelectSingleNode("GerarNfseResposta"); System.Xml.XmlNode ListaMensagemRetorno = Gerar.SelectSingleNode("ListaMensagemRetorno"); System.Xml.XmlNode MensagemRetorno = ListaMensagemRetorno.SelectSingleNode("MensagemRetorno")
I tried this way too, but it always comes null.
XmlNodeList xnList = xmlResponse.SelectNodes("/GerarNfseResposta/ListaMensagemRetorno/MensagemRetorno");
foreach (XmlNode xn in xnList)
{
string firstName = xn["Codigo"].InnerText;
string lastName = xn["Mensagem"].InnerText;
Console.WriteLine("Name: {0} {1}", firstName, lastName);
}
XML Return:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header></env:Header><env:Body><ns2:GerarNfseResponse xmlns:ns2="http://www.betha.com.br/e-nota-contribuinte-ws"><return><?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<GerarNfseResposta xmlns="http://www.betha.com.br/e-nota-contribuinte-ws">
<ListaMensagemRetorno>
<MensagemRetorno>
<Codigo>00000</Codigo>
<Mensagem>00000 - O RPS 8965 da série 999 já foi informado em outra nota fiscal.</Mensagem>
</MensagemRetorno>
</ListaMensagemRetorno>
</GerarNfseResposta>
</return></ns2:GerarNfseResponse></env:Body></env:Envelope>