Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SSRS报告中显示格式化的XML?_Xml_Reporting Services - Fatal编程技术网

如何在SSRS报告中显示格式化的XML?

如何在SSRS报告中显示格式化的XML?,xml,reporting-services,Xml,Reporting Services,我的数据集中有一个字段包含未格式化的XML字符串,例如: <root><element><subelement>value</subelement></element></root> 值 如何“美化”它并在Tablix控件中显示它?像这样: <root> <element> <subelement>value</subelement> <

我的数据集中有一个字段包含未格式化的XML字符串,例如:

<root><element><subelement>value</subelement></element></root>
如何“美化”它并在Tablix控件中显示它?像这样:

<root>
    <element>
        <subelement>value</subelement>
    </element>
</root>

价值

这可以通过在报告中使用嵌入式代码并使用
System.Xml.XmlTextWriter
XmlTextWriterSettings.Indent=true来实现

打开“报告属性”对话框,并在“代码”选项卡中粘贴以下函数:

Public Function FormatXml(input As String) As String
  Dim doc As New System.Xml.XmlDocument()
  doc.LoadXml(input)
  Dim sb As New System.Text.StringBuilder()
  Dim settings As New System.Xml.XmlWriterSettings()
  settings.Indent = True
  settings.IndentChars = "    "      ' This includes 4 non-breaking spaces: ALT+0160
  settings.NewLineChars = System.Environment.NewLine
  settings.NewLineHandling = System.Xml.NewLineHandling.Replace
  settings.OmitXmlDeclaration = True
  Using writer As System.Xml.XmlWriter = System.Xml.XmlWriter.Create(sb, settings)
    doc.Save(writer)
  End Using
  Return sb.ToString()
End Function
您还需要添加对
System.Xml
的引用,因为默认情况下不包括该引用。选择报表属性中的“引用”选项卡,然后从.NET程序集列表中添加
System.Xml

System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
然后,在文本框/表格的表达式中,可以使用以下表达式:

=Code.FormatXml(Fields!YourXmlField.Value)
尝试部署报告时,可能会收到以下错误:

The definition of the report '/your.report' is invalid. Line 0:, Column: 0

此错误消息不是很有用,但它可能意味着您的嵌入式代码在某些方面是不正确的。最常见的原因是引用的类找不到。例如,
XmlWriterSettings
而不是
System.Xml.XmlWriterSettings

这在我的本地主机上非常有效,但部署到远程服务器时不起作用。我没有收到错误,但是XML没有格式化。我已经找到了很多关于在SSR中部署自定义程序集的信息,但是没有找到任何关于.NET程序集使用疑难解答的信息。我注意到IE不能读取不同深度的缩进,而Chrome和Mozilla可以()。我还没有调试,但是我想知道你是否遇到了这个问题/有什么建议吗+在这两种情况下都是1!!旁注:XML必须位于TXT框元素中。。而不是在小报里。。这在一个让我挠头的小报里不起作用!