如何将.XML反序列化为列表

时间:2014-09-20 07:55:56

标签: .net deserialization xml-deserialization

假设我有一个XML文件,其中包含患者信息:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfPatient xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Patient>
    <firstName>Vince</firstName>
    <lastName>Smith</lastName>
    <dateOfBirth>05/05/1912</dateOfBirth>
    <phone>3056988877</phone>
    <email>random@google.com</email>
    <insurance>Humana</insurance>
    <typeOfPlan>PPA</typeOfPlan>
    <subID>123456</subID>
    <planID>654321</planID>
  </Patient>
  <Patient>
    <firstName>Mark</firstName>
    <lastName>Jones</lastName>
    <dateOfBirth>05/05/1992</dateOfBirth>
    <phone>3058877457</phone>
    <email>random@hotmail.com</email>
    <insurance>PlanB</insurance>
    <typeOfPlan>PPO</typeOfPlan>
    <subID>987987</subID>
    <planID>987987</planID>
  </Patient>

如何将这些信息加载到Visual Studio中的患者列表中?这是我的尝试,但我收到一个错误:

Dim Patients As New List(Of Patient)
Dim p As New Patient
Dim reader As New StreamReader("..\..\patients.xml")
Dim serial As New XmlSerializer(GetType(List(Of Patient)))
For Each paciente In serial.Deserialize(reader)
    Patients.Add(paciente)
Next

但是它给我一个非处理的表达式错误。

患者类只具有XML中所有字段的所有属性。

1 个答案:

答案 0 :(得分:0)

这个应该只是一个铸造的东西。我的VB生锈了,但在C#中:

List<Patient> patients = (List<Patient>)serial.Deserialize(reader);

序列化程序应该已经返回一个列表。