Announcement

Collapse
No announcement yet.

Linq to XML

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Linq to XML

    Hallo Programmiere gerade ein AdminCenter welches auf einer WebApi basiert.

    Die post request klappen alle super doch habe ich ein Problem beim einlesen der Server informationen.
    Die Api übergibt diese information nach ansprechen des server/info Controllers im XML Format.
    Hier ein kleines beispiel wo ich die rückgabe des controllers in eine txt schreiben ließ:
    Spoiler:
    Code:
    <?xml version="1.0" encoding="UTF-8" ?>
    <response>
      <port>25566</port>
      <id>unnamed</id>
      <maxplayers>6</maxplayers>
      <plugins>16</plugins>
      <players>0</players>
      <name>Unknown Server</name>
      <uptime>158911</uptime>
      <worlds>1</worlds>
      <version>git-Bukkit-0.0.0-734-gaa4a5c8-b780jnks (MC: 1.5_02)</version><ip>#.#.#.#</ip>
    </response>


    Mein Problem momentan liegt bei der from-select abfrage.
    Das Xdocument wir richtig geladen die dekleration wird auch erkannt etc etc etc..
    Nur komigerweise scheint die query bei der foreach schleife keine XElements zu enthalten.
    hier der Code:
    Spoiler:
    [highlight=c#] ArrayList queryItems = new ArrayList();
    queryItems.Add("password=" + this.txtPass.Text);
    queryItems.Add("format=xml");

    TextReader xmlStrToXmlDocReader = new StringReader(postRequester.doRequest("server/info", queryItems));

    XDocument serverInfo = XDocument.Load(xmlStrToXmlDocReader);

    var query = from item in serverInfo.Descendants("reponse")
    select item;

    foreach(XElement item in query)
    {
    if(item.Name == "players")
    {
    this.usersOnline = Convert.ToInt32(item.Value);
    }
    if(item.Name == "maxplayers")
    {
    this.maxUsersOnline = Convert.ToInt32(item.Value);
    }
    }

    this.lblOnlineUsers.Text = "User Online: " + this.usersOnline + "/" + this.maxUsersOnline;[/highlight]

  • #2
    Hallo,

    ArrayList gehört in die Mottenkiste und sollte wie alle untypisierten Collections aus System.Collections nicht mehr benutzt werden. Verwende stattdessen List<T> und alle anderen typisierten Collections aus System.Collections.Generic.

    Was willst du denn abfragen?


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Ok werde den Code auf die List<T> abändern.
      Abfragen wollte ich Serverstatistiken.

      Das Problem habe ich mitlerweile gefunden
      Es war ein facher schreibfehler. Die Node in der xml unter der die Items zu finden sind die die Statistiken enthalten heisst nicht reponse sondern response

      Tschuldigung aber hatte in dem stück Code gnadenlos eine halbe stunde lang den Schreibfehler übersehen und konnte mir nicht erklären warums nicht funktioniert.

      Trotzdem danke

      Comment


      • #4
        Hallo,

        scheinbar hab ich den Schreibfehler auch übersehen -> deshalb fragte ich ja nach

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment

        Working...
        X