XML文字列をListに変換する必要があります。メソッドは汎用である必要があります。私は方法を書いたが、期待通りの性能を発揮していない。C#の要素ルートを指定せずにXML文字列をリスト<T>に変換します。
シナリオ:#1
モデルクラス:
public class Employee {
public int EmpId { get; set; }
public string Name { get; set; }
}
XML:
<EmployeeList
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Employee>
<EmpId>1</EmpId>
<Name>Emma</Name>
</Employee>
<Employee>
<EmpId>2</EmpId>
<Name>Watson</Name>
</Employee>
</EmployeeList>
シナリオ:#2
モデルクラス:
public class Person {
public int PersonId { get; set; }
public string Name { get; set; }
}
XML:私は上記の変換する一般的な方法を必要とする
<PersonList
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Person>
<PersonId>1</EmpId>
<Name>Emma</Name>
</Person>
<Person>
<PersonId>2</EmpId>
<Name>Watson</Name>
</Person>
</PersonList>
はList<Employee>
とList<Person>
へのXMLの言いました。
私は、次のコード
public static T[] ParseXML<T>(this string @this) where T : class {
var reader = XmlReader.Create(@this.Trim().ToStream(),new XmlReaderSettings() { ConformanceLevel = ConformanceLevel.Document });
return new XmlSerializer(typeof(T[])).Deserialize(reader) as T[];
}
を使用しかし、私はNULL
を取得しています。親切に私の手助けをしてください。
私はたくさんのコードを審査しましたが、ルート要素をハードコードされた値として指定するように指示しています。しかし、私は一般的な方法が必要です。
署名が
public static T[] ParseXML<T>(this string @this) where T : class { }
親切にこの点で私を支援する必要があります。
@Masteroのように見えている。そこに必要な変更なし - 'のちょうど最後の行ParseXML'は 'SerializerCache .Instance'の代わりに' new XmlSerializer(...) ' –
はい私はそれを得た。ありがとう... –