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

时间:2013-10-30 04:49:43

标签: xml reporting-services

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

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

如何“美化”它并在Tablix控件中显示它?像这样:

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

1 个答案:

答案 0 :(得分:4)

这可以通过在报告中使用嵌入式代码并使用System.Xml.XmlTextWriterXmlTextWriterSettings.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的引用,因为默认情况下不包含该引用。选择Report Properties中的'References'选项卡,然后从.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