使用VS2015或更高版本编辑SSRS报表时,生成的XML与Reporting Services 2012不兼容。我们需要做几处修改。我正在尝试编写一个可以通过编程实现此目的的脚本。
我得到了替换xmlns定义的代码和删除了整个节点的代码。
我不知道如何删除和保留孩子。 (使用C#)
<ReportSections>
<ReportSection>
<Body></Body>
<Width></Width>
...
</ReportSection>
</ReportSection>
//THIS CODE DOES NOT WORK
//Remove <ReportSections></ReportSections> <ReportSection>/<ReportSection>
foreach (XmlNode child in rnode.ChildNodes)
{
if(child.Name.Equals("ReportSections",
StringComparison.InvariantCultureIgnoreCase))
{
child.ParentNode.AppendChild(child);
}
child.ParentNode.RemoveChild(child);
}
这是我编写的要删除的代码,包括子代码。
//Remove <ReportParameters>...</ReportParameters> and all its content
foreach (XmlNode xNode in rnode.ChildNodes)
{
if (xNode.Name.Equals("ReportParameters", StringComparison.InvariantCultureIgnoreCase))
{
xNode.ParentNode.RemoveChild(xNode);
}
}
答案 0 :(得分:0)
这是我的工作解决方案
//Remove <ReportSections></ReportSections> <ReportSection>/<ReportSection>
foreach (XmlNode rootChild in rnode.ChildNodes)
{
if (rootChild.Name.Equals("ReportSections", StringComparison.InvariantCultureIgnoreCase))
{
foreach (XmlNode reportSectionsChild in rootChild.ChildNodes)
{
if (reportSectionsChild.Name.Equals("ReportSection", StringComparison.InvariantCultureIgnoreCase))
{
foreach(XmlNode reportSectionChild in reportSectionsChild.ChildNodes)
{
reportSectionChildren.Add(reportSectionChild);
}
}
}
rootChild.ParentNode.RemoveChild(rootChild);
}
}
foreach (var child in reportSectionChildren)
{
rnode.AppendChild(child);
}