1

我是 XMLSerialization 的新手,附近没有人可以帮助我,所以这是我想要 XMLSerialize/Deserialize 的一部分代码,以及一个错误本身。

我有一个三类:

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 时遇到此错误(来自以下俄罗斯的翻译):

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,所以俄语上的消息是这样的:“未处理的异常:.......:Clinic.doctor 不可用,因为它的保护级别。只能处理泛型类型。” 翻译几乎是字面意思,所以请记住。

希望有人能帮助我,因为我可以用简单的“XML Writer”编写“医生”类,但仍然没有意义(我认为),只要我可以用一行而不是 20 行保存它。

多谢你们。

Upadte:刚刚上完所有的课——公开课。现在我在字符串上遇到错误: 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只能序列化公共类和成员。要么制作 theDoctor及其所有基类public class,要么使用不同的序列化程序(例如DataContractSerializer)。

于 2013-03-23T12:24:10.873 回答