使用C#反序列化非标准XML文件

时间:2014-06-07 14:49:08

标签: c# xml deserialization

我试图反序列化以下XML但没有成功。

XML输入文件:

<PERSONS>
  <INFO1>No Errors</INFO1><INFO2>Group 12</INFO2><INFO3>TX</INFO3><INFO4>US77002</INFO4>
<PERSON>
 <E1>1972/01/21</E1><E2>08:00:12</E2><E8>Jimmy</E8><E10>Smith</E10><E9>4120120212</E9>
 <E6><T1>201</T1><T2>Good</T2><T3>1234</T3></E6> <E7><T1>202</T1><T2>Very good</T2><T3>4124</T3></E7> </PERSON>
<PERSON>
 <E1>1972/01/21</E1><E2>08:00:12</E2><E8>Jimmy</E8><E10>Smith</E10><E9>4120120212</E9>
 <E6><T1>201</T1><T2>Good</T2><T3>1234</T3></E6> <E7><T1>202</T1><T2>Very good</T2><T3>4124</T3></E7> </PERSON>
...
</PERSONS>

我想检索每个人的所有数据以及E6和E7中的T1,T2等。 我怎么能做到这一点?

我尝试使用XmlSerializer进行反序列化,但获得了InvalidOperation异常。

代码段:

    private static PersonCollection GetPersonCollection()
    {
        PersonCollection persons = null;
        string path = "personfile.xml";

        XmlSerializer serializer = new XmlSerializer(typeof(PersonCollection));

        StreamReader reader = new StreamReader(path);
        persons = (PersonCollection)serializer.Deserialize(reader);
        reader.Close();

        return persons;
    }


[Serializable()]
public class PersonCollection
{
    [System.Xml.Serialization.XmlElement("E1")]
    public string E1 { get; set; }

    [System.Xml.Serialization.XmlElement("E2")]
    public string E2 { get; set; }

    [System.Xml.Serialization.XmlElement("E3")]
    public string E3 { get; set; }

... // XmlAttribute for T1, T2, T3 ??
}

有什么建议吗?

感谢。

0 个答案:

没有答案