Xamarin Monodroid で開発された Android アプリケーションのオブジェクトに XML ファイルを逆シリアル化しようとしています)。
純粋な 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>();
}
}
にOtherGreaterObject
は共通の属性があります (つまり、文字列形式)。したがって、XML を生成すると、次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<MyGreatObject xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ObjectName>This is the object name</ObjectName>
<ObjectLink>http://www.xamarin-is-awesome.com</ObjectLink>
<ObjectStuff>Description</ObjectStuff>
<OtherObjects>
<OtherGreatObject>...</OtherGreatObject>
<OtherGreatObject>...</OtherGreatObject>
</OtherObjects>
</MyGreatObject>
そして、私はそれを次のように逆シリアル化しようとします:
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.XmlException: Document element did not appear. Line 1, position 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
Google で多くの時間を失ったので、お尋ねします。
あなたが提供できる助けを前もって感謝します。