c# read a remote source XML file

Question:

I have an API that generates an XML for me, but whenever I try to get the XML to handle on the other side, it returns an error.

the XML is this:

<ArrayOfResponsaveis xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/webservice.Models">
<Responsaveis>
<id>1</id>
<matricula>uc14100703</matricula>
<nivel>1</nivel>
<nome>danilo dorgam</nome>
<senha>xxxx</senha>
</Responsaveis>
</ArrayOfResponsaveis>

the code I use to read the XML is this

public Boolean setLogin(string matricula, string senha)
{
    string url = URL_WEBSERVICE+matricula+"/"+senha;
    var xdoc = XDocument.Load(@url);
    var lv1s = from lv1 in xdoc.Descendants("Responsaveis")
               where (string) lv1.Element("id").Value == "1"
               select lv1;
    return false;
}

but in XDocument.Load it crashes and shows the following error

System.Xml.XmlException: 'Dados no nível raiz inválidos. Linha 1, posição 1.'

Answer:

The problem is the way to read the attributes, I recommend doing this for a class.

A valid example of a class to deseque your xml in model https://paste.ofcode.org/BDAVPU5T5sZ7xZ4kfjUmea

NOTE: Just copy the XML go to visual studio > Edit > Special Paste > XML to class

Reading XML via the web.

using System.Net.Http;

var client = new HttpClient();
var uri = new Uri(url);
HttpResponseMessage response = await client.GetAsync(uri);

Method 1 – Serializing:

var responseString = response.Content.ReadAsStringAsync().Result;
    var serializer = new XmlSerializer(typeof(ArrayOfResponsaveis));
    return (ArrayOfResponsaveis)serializer.Deserialize(responseString);

Method 2 – Reading the attributes

if (response.IsSuccessStatusCode)
{
    var responseString = response.Content.ReadAsStringAsync().Result;
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.LoadXml(responseString);
    var nodes = xmlDoc.SelectNodes("/Responsaveis/*");

    foreach (XmlNode childNode in nodes)
    {
        switch (childNode.Name)
        {
         //logica
        }
    }
Scroll to Top
AllEscort