C# Monodroid:文档元素未出现
我正在尝试将一个XML文件反序列化为我的android应用程序中的一个对象,该应用程序是用Xamarin Monodroid开发的 我用纯C#生成XML,将XML文件复制到应用程序的assets文件夹中,然后在应用程序启动时对其进行反序列化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
[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"?>