正如Jamie F所说,在报告中使用财产的公式和表达式会更容易。
但是,如果您坚持通过XML操作来实现,请考虑更改XML而不是反序列化对象。
我这么说是因为它更干净。
对于反序列化的对象,您必须执行一个循环,检查每个对象是否都是您想要的节点,然后继续此过程,直到找到您需要的节点。
如果对象是序列化的,并且是XML格式的,比如字符串,那么您可以简单地使用XElement来快速获取您想要的东西。
例子:
我使用它从报告定义(文件xml字符串)中获取报告的宽度。
public String GetWidth()
{
XElement Report = XElement.Parse(this._ReportDefinition);
return Report.Element({http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition}Width").Value;
}
或者另一个例子:
// The grabs the names of all tablix report items from the report definition.
public String GetReportItemName(String DataSetName)
{
XElement Report = XElement.Parse(this._ReportDefinition);
String ReportItemName = String.Empty;
XElement Body = Report.Element("{http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition}Body");
XElement ReportItems = Body.Element("{http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition}ReportItems");
foreach (XElement ReportItem in ReportItems.Elements())
{
if (ReportItem.Name == "{http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition}Tablix")
{
String Name = ReportItem.Element("{http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition}DataSetName").Value;
if (Name == DataSetName)
{
ReportItemName = ReportItem.Attribute("Name").Value;
}
}
}
return ReportItemName;
}
希望这对你有帮助。