"缺少根元素"错误,但我有一个根元素 [英] "Root element is missing" error but I have a root element

查看:968
本文介绍了"缺少根元素"错误,但我有一个根元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果任何人都可以解释为什么我得到一个根元素是缺少的错误时,我的XML文档(图像附后)有一个根元素,他们赢这从它的眼睛触发lazers一匹小马。





代码:

 如果(ISF.FileExists(Players.xml))
{
字符串的XML;使用(IsolatedStorageFileStream rawStream = ISF.OpenFile(Players.xml,FileMode.Open))
{
StreamReader的读者=新的StreamReader(rawStream)
;
XML = reader.ReadToEnd();
XmlReaderSettings设置=新的XmlReaderSettings {I​​gnoreComments = TRUE,IgnoreWhitespace =真};
的XmlReader的XMLReader = XmlReader.Create(读卡器,设置);
,而(xmlReader.Read())
{
开关(xmlReader.NodeType)
{
情况下XmlNodeType.Element:
开关(xmlReader.Name )
{
案numberOfPlayers:
串的nodeValue = xmlReader.ReadContentAsString();
INT的nodeValue = int.Parse(的nodeValue);
MessageBox.Show(+的nodeValue);
中断;
}
中断;
}
中断;
}
reader.Close();
}
}


解决方案

您问题是由于这一行:

  XML = reader.ReadToEnd(); 

这定位读者流结束,这样当 XmlReader.Create 执行,没有什么留给它来读取流。



如果您需要的 XML string要填充,那么你需要关闭和 XmlReader.Create 。否则,删除或注释掉这一行出将解决你的问题。


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.

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();
    }
}

解决方案

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.

这篇关于"缺少根元素"错误,但我有一个根元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆