x


Loading xml data from www.text

I can load a comma deliminated version of my xml data into my class fine, but in order to make it cleaner I wanted to output the data from my server in xml format and then load it in unity.

In none xml format, I use WWW.text and then parse it. so Im assuming that to get xml from the web I would use the same thing.

I can also load an xml file fine using the following code:

    public static object Load(Type type, string path)
    {
       object data;
       try
       {
         StreamReader reader = new StreamReader(path);
         XmlSerializer xml = new XmlSerializer(type);
         data = xml.Deserialize(reader);
         reader.Close ();
       }
       catch
       {
         data = null;
       }

       return data;
    }

However getting an xml schema from www.text and then deserializing it has not worked for me. Ive tried multiple derivative of the above code. Could some one aid me in collecting xml from www.text?

the output from my server is standard xml format.

EDIT:

Here is a slightly modified version that has given me the most luck. It seems it is loading the xml file because an exception isnt thrown in my catch block, although the class values its supposed to populate are still showing up null. Again, when i use the version that loads from files it works perfectly.

public static object LoadXML(Type type, string url)
    {
       object data;

        try
        {
            using (StringReader reader = new StringReader(url))
            {
                XmlSerializer xml = new XmlSerializer(type);
                data = xml.Deserialize(reader);
                reader.Close();
            }
        }
        catch(Exception exception)
        {
         Debug.LogError (exception);
         data = type.GetConstructor(Type.EmptyTypes).Invoke(null);
       }

       Debug.Log (data.ToString());
        return data;
    }
more ▼

asked Aug 29 '12 at 12:14 AM

MichaelTaylor3d gravatar image

MichaelTaylor3d
154 8 16 27

(comments are locked)
10|3000 characters needed characters left

2 answers: sort voted first

The issue ended up being a problem with uppercase and lower case. But this peice of code is what exposed it almost immediately.

Using xmlserializers event handlers, I was able to nail down the problem:

    private void Serializer_UnknownElement(object sender, XmlElementEventArgs e)
    {
      Debug.Log("Unknown Element");
      Debug.Log(e.Element.Name + " " + e.Element.InnerXml);
      Debug.Log("LineNumber: " + e.LineNumber);
      Debug.Log("LinePosition: " + e.LinePosition);

      gtMember x  = (gtMember) e.ObjectBeingDeserialized;
      Debug.Log(x.AccountName_a);
      Debug.Log(sender.ToString());
   }

And then insert this into the xml string serializer from above: serializer.UnknownElement+=new XmlElementEventHandler(Serializer_UnknownElement);

more ▼

answered Aug 30 '12 at 05:13 PM

MichaelTaylor3d gravatar image

MichaelTaylor3d
154 8 16 27

(comments are locked)
10|3000 characters needed characters left

Its possible www.text sometimes comes with some unwanted characters. Try using replace in the www.text, one that has always got me is the indent character, try:

string cleanedResponse = www.text.Replace("\t", "");

more ▼

answered Aug 29 '12 at 05:13 AM

Pandiux gravatar image

Pandiux
137 17 32 35

I incorporated that into the code, still doesnt seem to be working, although I like having it in there as a way to protect it from those errors in the future. I really think that Its that i dont have the xml deserializer coded properly to handle a string. The version I have working handles files fine though.

Aug 30 '12 at 01:49 AM MichaelTaylor3d
(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x548
x263

asked: Aug 29 '12 at 12:14 AM

Seen: 495 times

Last Updated: Aug 30 '12 at 05:14 PM