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

前端 未结 3 1047
遇见更好的自我
遇见更好的自我 2021-01-07 17:21

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

相关标签:
3条回答
  • 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.

    0 讨论(0)
  • 2021-01-07 17:40

    I ended up creating a quick little function to reference before each new XmlReader...

    private void ResetStream()
    {
        /*
        The point of this is simply to open the stream with a StreamReader object
        and set the position of the stream to the beginning again.
        */
    
         StreamReader reader = new StreamReader(m_stream);
    
         if (reader != null)
        {
            reader.BaseStream.Position = 0;
        }
    }
    

    So when I'm working in xml I call it right before I create my reader. I always have the same stream in memory and never recreate that.

    ResetStream();
    using (XmlReader reader = XmlReader.Create(m_stream)) { reader.Read(); }
    
    0 讨论(0)
  • 2021-01-07 17:46

    Reset the base stream's position each time it is read if you want to read from the beginning as stated earlier, but you don't have to re-create the stream each time.

    String xmlResource = Assembly.GetExecutingAssembly().GetName().Name + ".XML.IODeleter.xsd";
    configXsd = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(xmlResource));
    if (configXsd != null)
      {
        configXsd.BaseStream.Position = 0;
    
        File.WriteAllText(apppath + @"\" + Assembly.GetExecutingAssembly().GetName().Name + ".XML.IODeleter.xsd", configXsd.ReadToEnd());
      }
    
    0 讨论(0)
提交回复
热议问题