1

現在、分離ストレージを使用して情報を処理するウィンドウゲームを開発しています。私はXMLでそれをやろうとしていますが、XML文書を生成してそれを読み取ろうとしているときにこの問題に遭遇します。生成されたコードと XML を次に示します。

コードの一部:

using(IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForAssembly())
{
    using(IsolatedStorageFileStream stream =
      new IsolatedStorageFileStream("class.xml", FileMode.Create, file))
    {
        XmlWriterSettings setting = new XmlWriterSettings();
        setting.Indent = true;
        using(XmlWriter writer = XmlWriter.Create(stream, setting))
        {
            XmlSerializer serializer = new XmlSerializer(typeof (Student));
            serializer.Serialize(stream, new Student()
            {
                Name = "AhLim"
            });
        }
    }

    using(IsolatedStorageFileStream stream =
      new IsolatedStorageFileStream("class.xml", FileMode.Open, file))
    {
        XmlSerializer serializer = new XmlSerializer(typeof (Student));
        studentA = (Student) serializer.Deserialize(stream);
    }
}

学生クラス:

public class Student
{
    public String Name { get; set; }
}

生成された XML ドキュメント:

<?xml version="1.0"?>
<Student xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <Name>AhLim</Name>
</Student>

結局、デシリアライズするとタイトル通りのエラー、XML document error at (4,11) が発生します。グーグルでストリームの問題を知っているので、問題を理解できません。お世話になりました

4

2 に答える 2

1

IsolatedStorageFileStream間違ったエンコーディングで身もだえしている を使用して xml をXmlWriter作成しているため、作成した を使用してみてください。これはutf-8エンコーディングを使用し、正常にDeserialization動作するはずです。

using(IsolatedStorageFileStream stream = new IsolatedStorageFileStream("class.xml",FileMode.Create,file))
{
     XmlWriterSettings setting = new XmlWriterSettings();
     setting.Indent = true;
     using (XmlWriter writer = XmlWriter.Create(stream, setting))
     {
         XmlSerializer serializer = new XmlSerializer(typeof(Student));
         serializer.Serialize(writer, new Student() { Name = "AhLim" });
     }
}

IsolatedStorageFileStreamヘッダーを作成します

<?xml version="1.0"?>

XmlWriterヘッダーを作成します

<?xml version="1.0" encoding="utf-8"?>
于 2013-02-04T03:16:11.053 に答える
0

これと同じ問題がありました。愚かな Microsoft は、学生クラスには public の既定のコンストラクターが必要であることを伝えるのを忘れていました。つまり public Student() {} とすれば、問題はなくなります。

于 2014-12-03T12:20:27.870 に答える