我尝试将对象列表(" Doctor"的类型)导出到c#中的xml文件中。 它编译并运行,但我得到的文件是不正确的。有人可以告诉我我做错了吗?
代码是:
public static void exportAsXml(string fileName, List<Entity> ListOfEntity)
{
FileInfo file = new FileInfo(fileName + ".xml");
StreamWriter sw = file.AppendText();
System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(Doctor));
foreach (Entity e in ListOfEntity)
{
writer.Serialize(sw,e as Doctor);
}
sw.Close();
}
xml文件是:
<?xml version="1.0" encoding="utf-8"?>
<Doctor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ID>87587579</ID>
<FirstName>Dan</FirstName>
<LastName>Adi</LastName>
<Gender>male</Gender>
<Salary>15000</Salary>
</Doctor><?xml version="1.0" encoding="utf-8"?>
<Doctor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ID>302342246</ID>
<FirstName>Lital</FirstName>
<LastName>Gal</LastName>
<Gender>female</Gender>
<Salary>25600</Salary>
</Doctor><?xml version="1.0" encoding="utf-8"?>
<Doctor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ID>205992457</ID>
<FirstName>Yaron</FirstName>
<LastName>Mor</LastName>
<Gender>male</Gender>
<Salary>10000</Salary>
</Doctor>
谢谢!
答案 0 :(得分:3)
首先,生成的xml违反了2个核心规则。
<?xml version="1.0" encoding="utf-8">
声明换句话说,在循环中,您为每个项目生成一个单独的,完全成熟的xml文件。
试试这个
var writer = new System.Xml.Serialization.XmlSerializer(typeof(List<Doctor>));
writer.Serialize(sw, ListOfEntity);
答案 1 :(得分:0)
您正在通过序列化医生对象并使用file.AppendText();
将其保存到同一文件来破坏xml文件,从而生成包含多个<?xml version="1.0" encoding="utf-8"?>
声明的损坏的xml。
您应序列化List<Doctor>
,而不是单独序列化每位医生并通过附加文本修改xml文件。
如果要修改保存在文件中的序列化对象,则需要将文件反序列化为对象,修改它,然后用新的序列化对象替换该文件。你不能简单地追加它。