Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Monodroid:文档元素未出现_C#_Android_Xml Serialization_Xamarin.android - Fatal编程技术网

C# Monodroid:文档元素未出现

C# Monodroid:文档元素未出现,c#,android,xml-serialization,xamarin.android,C#,Android,Xml Serialization,Xamarin.android,我正在尝试将一个XML文件反序列化为我的android应用程序中的一个对象,该应用程序是用Xamarin Monodroid开发的 我用纯C#生成XML,将XML文件复制到应用程序的assets文件夹中,然后在应用程序启动时对其进行反序列化 [Serializable] public class MyGreatObject { public string ObjectName; public string ObjectLink; public string ObjectS

我正在尝试将一个XML文件反序列化为我的android应用程序中的一个对象,该应用程序是用Xamarin Monodroid开发的

我用纯C#生成XML,将XML文件复制到应用程序的assets文件夹中,然后在应用程序启动时对其进行反序列化

[Serializable]
public class MyGreatObject
{
    public string ObjectName;
    public string ObjectLink;
    public string ObjectStuff;
    public List<OtherGreatObject> OtherObjects;

    public MyGreatObject()
    {
        OtherObjects = new List<OtherGreatObject>();
    }
}
我试着这样反序列化它:

internal static class SerializableXml
{
    public static MyGreatObject LoadData(Context context_, string fileName_)
    {
        MyGreatObject greatObject = new MyGreatObject();
        try
        {
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyGreatObject));
            using (Stream input = context_.Assets.Open(fileName_, Android.Content.Res.Access.Buffer))
                greatObject = xmlSerializer.Deserialize(input) as MyGreatObject;
        }
        catch (Exception exception)
        {
            Android.Util.Log.Error("XML", "ERROR IN LOADING");
            Android.Util.Log.Error("XML", exception.ToString());
            throw;
        }
        return greatObject;
    }
}
但是我得到了错误
System.Xml.xmleexception:Document元素没有出现。第1行,位置1。

at Mono.Xml2.XmlTextReader.Read() [0x00000] in <filename unknown>:0
at System.Xml.XmlTextReader.Read() [0x00000] in <filename unknown>:0
at System.Xml.XmlReader.MoveToCOntent() [0x00000] in <filename unknown>:0
at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadRoot() [0x00000] in <filename unknown>:0
at System.Xml.Serialization.XmlSerializer.Deserialize(System.Xml.SerializationReader reader) [0x00000] in <filename unknown>:0
0中的Mono.Xml2.XmlTextReader.Read()[0x00000]处的

位于:0中的System.Xml.XmlTextReader.Read()[0x00000]处
位于:0中的System.Xml.XmlReader.MoveToCOntent()[0x00000]处
位于:0中的System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadRoot()[0x00000]处
在:0中的System.Xml.Serialization.XmlSerializer.Deserialize(System.Xml.SerializationReader reader)[0x00000]处
我在谷歌上浪费了很多时间,所以我要问你


非常感谢您提供的帮助。

好了,问题解决了

谷歌没有发现任何关于这个错误的信息(在我的情况下)。 我认为
XmlSerializer
(几年前我读到Mono框架中的一个错误),但事实并非如此

然后,我认为XML中有问题,但根本不确定。为什么会有这样的错误消息?我应该有“无效节点名”、“无效属性”或类似的内容

但我是对的节点的名称不正确,此返回的
文档元素未出现。第1行,位置1。
(或表示无任何意义的异常消息)


所以,问题解决了

我在使用Xamarin.iOS 8.4时也遇到了这个错误 尽管在Android上一切正常,但在iOS构建中我收到了错误:

Document element did not appear.  Line 1, position 1.
我的XML文件(不是手动编写的,而是用c#序列化的)有以下行:

<?xml version="1.0" ?>

我通过添加encoding属性来修复它,如下所示:

<?xml version="1.0" encoding="utf-8"?>


如果您有许多文件,显然这不是最好的解决方案,但序列化程序中可能有一个方法可以编辑编码。我没有研究这个问题,因为我不需要,但如果有人遇到这个问题,这可能是一个开始。

什么是“节点的坏名称”?我在这里面临同样的错误,但问题是XmlSerializer编写了它,所以我不理解XmlDeserializer为什么不能读取它。我并不是在试图读取我手动创建的Xml。。。我甚至将我的XML传递给W3C XML验证器:它告诉我一切正常。您的XML可以理解为XML,但由于您的对象规范,无法反序列化到您的对象中。我指的是列表、对象[]、主要类型等等。你应该发布你的一些代码,这会更容易帮助。我正在考虑,但我必须为它创建一个问题,我不能在这里发布。我会看看我是否可以解决这个问题,否则我可能会发布一个问题,我会在这里写链接,这样你可以回答,如果你知道答案。当做
<?xml version="1.0" encoding="utf-8"?>