【发布时间】:2011-12-01 23:47:36
【问题描述】:
我正在使用以下代码从 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 文件 sn-p (从上面的代码生成) -
<?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>
【问题讨论】:
-
你能用 LINQ-TO-XML 代替 XmlSerializer 吗?举一个您的 XML 示例,以便我能够根据您的 XML 结构为您提供一个示例。一个例子 - stackoverflow.com/a/8296317/485076
-
我已经添加了一个例子,我相信你会很清楚,因为它很简单
标签: c# xml linq-to-xml