1

私は XMLSerialization を初めて使用し、近くに助けてくれる人がいないので、ここに XMLSerialize/Deserialize したいコードの一部とエラー自体があります。

私は3つのクラスを持っています:

public class Contacts
{
    public string country;
    public string city;
    public string street;
    public int houseNumber;
    public int flatNumber;
    public int phoneNumber;

    public Contacts(){...};

    public Contacts(string cntry, string city, string str, int houseNum, int flatNum, int phoneNum){...};
    public override string ToString(){...};
}

public class SimpleHuman
{
    public string firstName;
    public string lastName;
    public int age;
    public string sex;
    public Contacts contacts;

    public SimpleHuman(){...};

    public SimpleHuman(string fn, string ln, int a, string s, Contacts c){...};

    public override string ToString(){...};
}

public class doctor : SimpleHuman
{
    public DateTime contractExpirationDate;
    public int idNumber;
    public List<int> doctorPatients;

    public doctor(){...};

    public doctor(string name, string surname, int age, string sex, int doctorID, Contacts c):base(name, surname, age, sex, c){...};

    public override string ToString(){...};
}

問題は、クラス「ドクター」をXMLファイルにシリアライズしようとしているときです:

XmlSerializer SerializerDoc = new XmlSerializer(typeof(doctor));

foreach(doctor d in doctorList)
{
    TextWriter WriteFileStream = new StreamWriter("doctors/" + d.firstName + d.lastName + ".xml");
    SerializerDoc.Serialize(WriteFileStream, d);

    WriteFileStream.Close();
}

TextWriter を作成すると、このエラーが発生します (以下の russina からの翻訳):

Clinic.launchMenu() × d:\Dropbox\CSharpHomeWork\ExamTask\Clinic\Prog ram.cs:строка 463 × Clinic.Program.Main(String[] args) × d:\Dropbox\CSharpHomeWork\ExamTask\Cli nic\Program .cs:строка 870 続行するには何かキーを押してください。. ."

私はロシア語版の WIN7 を持っているので、ロシア語のメッセージは次のようなものです。翻訳はほぼ文字通りなので、覚えておいてください。

単純な「XMLライター」でクラス「ドクター」を書くことができるので、誰かが私を助けてくれることを願っていますが、20行ではなく1行で保存できる限り、(私が思うに)意味がありません。

みんなありがとう。

Upadte:すべてのクラスを実行しました - public。今、文字列でエラーが発生しています: TextWriter WriteFileStream = new StreamWriter("doctors/" + d.firstName + d.lastName + ".xml");

It sais like: 

未処理の例外: System.IO.DirectoryNotFoundException: パス "D:\Dropbox\CSharpHomeWork\ExamTask\Clinic\bin\Debug\doctors\Anders onNeo.xml" の一部が見つかりませんでした。

パスは 100% 正しいです。ファイルを作成する代わりに、既存のファイルに何かを書き込もうとしているような気がします。

ところで、私は今それを行うことができないため、評判を上げて感謝することができずに申し訳ありません. しかし、今のところ「口頭での感謝」をしてください:)

4

1 に答える 1

3

は、XmlSerializerパブリック クラスとメンバーのみをシリアル化できます。Doctorとそのすべての基本クラスを作成するかpublic class、別のシリアライザ (例: DataContractSerializer) を使用します。

于 2013-03-23T12:24:10.873 に答える