SSRS Экспорт отчета в XML и удаление элемента <Report>

Я пытаюсь настроить отчет в SSRS с подпиской для экспорта некоторых данных в виде файла XML, чтобы их можно было импортировать в другое приложение. Однако элемент отчета заставляет все это упасть.

Мой вывод:

<?xml version="1.0" encoding="utf-8" ?> 
<Report xsi:schemaLocation="BO http://reportserver?%2FBO.BILLING%20BacklogTest&rs%3AFormat=XML&rc%3ASchema=True" Name="BO" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="BO">
    <ForecastGroups>
        <ForecastGroup>
        <Code>BO.BILLING</Code> 
            <ActualOutstandingTasks>
            <TimeStamp>2015-09-25T00:00:00</TimeStamp> 
                <ArrivalPeriods>
                    <ArrivalPeriod>
                    <StopTime>2015-09-25T00:00:00</StopTime> 
                    <StartTime>2015-09-24T00:00:00</StartTime> 
                    <Tasks>2074</Tasks> 
                    </ArrivalPeriod>
                </ArrivalPeriods>
            </ActualOutstandingTasks>
        </ForecastGroup>
    </ForecastGroups>
  </Report>

Это не сработает, если я не удалю элемент отчета вручную. Мне нужен вывод, чтобы быть:

<?xml version="1.0" encoding="utf-8"?>
<ForecastGroups>
    <ForecastGroup>
        <Code>BO.BILLING</Code>
        <ActualOutstandingTasks>
            <TimeStamp>2015-09-25T00:00:00</TimeStamp>
            <ArrivalPeriods>
                <ArrivalPeriod>
                    <StopTime>2015-09-25T00:00:00</StopTime>
                    <StartTime>2015-09-24T00:00:00</StartTime>
                    <Tasks>2074</Tasks>
                </ArrivalPeriod>
            </ArrivalPeriods>
        </ActualOutstandingTasks>
    </ForecastGroup>
</ForecastGroups>

И тогда все работает нормально. Есть ли способ в SSRS предотвратить отображение элемента отчета?

Спасибо, Гревилл

1 ответ

Подумайте об использовании XSLT, декларативного языка шаблонов, используемого для преобразования содержимого XML любым способом, формой или формой!

Конечно, вам понадобится процессор XSLT, который считывает исходный файл.xml, преобразует его в приведенный ниже файл.xsl и выводит окончательный файл.xml. Практически все современные языки программирования поддерживают библиотеки XSLT (Java, C#, Python, PHP, даже VBA, поскольку вы можете запускать преобразования xsl с помощью своего повседневного MS Access или MS Excel):

<?xml version='1.0' encoding='UTF-8'?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
       xsi:schemaLocation="BO http://reportserver?%2FBO.BILLING%20BacklogTest&amp;rs%3AFormat=XML&amp;rc%3ASchema=True"
       Name="BO" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bo="BO"> 
<xsl:output version="1.0" encoding="UTF-8"/>

<xsl:template match="bo:Report">
    <xsl:copy-of select="bo:ForecastGroups"/>
</xsl:template>

</xsl:transform>

ВЫХОД:

<?xml version='1.0' encoding='UTF-8'?>
<ForecastGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="BO">
        <ForecastGroup>
        <Code>BO.BILLING</Code> 
            <ActualOutstandingTasks>
            <TimeStamp>2015-09-25T00:00:00</TimeStamp> 
                <ArrivalPeriods>
                    <ArrivalPeriod>
                    <StopTime>2015-09-25T00:00:00</StopTime> 
                    <StartTime>2015-09-24T00:00:00</StartTime> 
                    <Tasks>2074</Tasks> 
                    </ArrivalPeriod>
                </ArrivalPeriods>
            </ActualOutstandingTasks>
        </ForecastGroup>
    </ForecastGroups>

Кстати, ваш оригинальный XML schemaLocation путь нужен амперсанду характер & сбежал как &amp;

Другие вопросы по тегам