Я использую следующий код для получения списка из XML-файла -
public static List<T> GetListFromXml<T>(string filePath)
{
using (TextReader reader = new StreamReader(filePath))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<T>));
return (List<T>) serializer.Deserialize(reader);
}
}
Однако мне также нужен способ фильтрации записей, где я могу отфильтровать список по -
- нет записей взять из xml файла
- фильтровать по определенному значению узла
Таким образом, подпись вышеуказанного метода изменится на -
public static List<T> GetListFromXml<T>(string filePath,
int listCount,
string filterbyNode,
string filterByValue);
Пожалуйста, сообщите мне, могу ли я отфильтровать напрямую из файла XML или мне следует отфильтровать из возвращенного списка?
приписка
Упомянутый выше xml-файл также создается из кода, использующего -
public static void WriteListToXml<T>(List<T> list, string filePath)
{
using (TextWriter writer = new StreamWriter(filePath))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<T>));
serializer.Serialize(writer, list);
}
}
Почему я сохраняю свою пользовательскую коллекцию, возвращенную из базы данных, в файл XML - потому что я хочу обрабатывать только пакет записей одновременно.
и фрагмент файла XML (сгенерированный из приведенного выше кода) -
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfClassifiedLocation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CLocation>
<CId>5726</CId>
<Long>0</Long>
<Lat>0</Lat>
<Postcode>ZZ1 5ZZ</Postcode>
<Street />
<Town />
</CLocation>
<CLocation>
<CId>5736</CId>
<Long>0</Long>
<Lat>0</Lat>
<Postcode>ZZ1 5ZZ</Postcode>
<Street />
<Town />
</CLocation>
</ArrayOfClassifiedLocation>