C# – “Root element is missing” error but I have a root element

c++xml

If anyone can explain why I'm getting a "Root element is missing" error when my XML document (image attached) has a root element, they win a pony which fires lazers from its eyes.

enter image description here

Code:

if (ISF.FileExists("Players.xml"))
{
    string xml;
    using (IsolatedStorageFileStream rawStream = ISF.OpenFile("Players.xml", FileMode.Open))
    {
        StreamReader reader = new StreamReader(rawStream);
        xml = reader.ReadToEnd();
          XmlReaderSettings settings = new XmlReaderSettings { IgnoreComments = true, IgnoreWhitespace = true };
        XmlReader xmlReader = XmlReader.Create(reader, settings);
         while (xmlReader.Read())
        {
            switch (xmlReader.NodeType)
            {
                case XmlNodeType.Element:
                    switch (xmlReader.Name)
                    {
                        case "numberOfPlayers":
                            string nodeValue = xmlReader.ReadContentAsString();
                            int NODEVALUE = int.Parse(nodeValue);
                            MessageBox.Show(" " + NODEVALUE);
                            break;
                    }
                    break;
            }
            break;
        }
        reader.Close();
    }
}

Best Solution

Your problem is due to this line:

xml = reader.ReadToEnd();

This positions the reader stream to the end so that when XmlReader.Create is executed, there is nothing left in the stream for it to read.

If you need the xml string to be populated, then you need to close and reopen the reader prior to XmlReader.Create. Otherwise, removing or commenting this line out will solve your problem.