Ich muss die XML-Zeichenfolge in List konvertieren, sollte die Methode generisch sein. Ich habe eine Methode geschrieben, die aber nicht wie erwartet funktioniert.XML-String in Liste konvertieren <T> ohne Angabe von Element Root in C#
Szenario: # 1
Model-Klasse:
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>
Szenario: # 2
Model-Klasse:
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>
Ich brauche eine generische Methode, die oben zu konvertieren die XML ist zu List<Employee>
und List<Person>
.
habe ich den folgenden Code
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[];
}
Aber ich bin NULL
bekommen. Bitte helfen Sie mir, damit umzugehen.
Ich habe viel Code referenziert, aber sie sagen, das Root-Element als fest codierten Wert anzugeben. Aber ich brauche eine generische Methode.
Die Signatur sollte in dieser Hinsicht
public static T[] ParseXML<T>(this string @this) where T : class { }
Bitte helfen Sie mir sein.
@Mastero alles, was ich erwähnt habe, nach innen * Ihrer vorhandenen 'ParseXML' Methode * happen, so: keine Änderung erforderlich - nur die letzte Zeile von' ParseXML' würde 'SerializerCache .Instance' anstelle von' new XmlSerializer (...) ' –
Ja, ich habe es. Vielen Dank... –