public void CanRead2016Report()
        {
            var xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<Report xmlns=""http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition"" xmlns:rd=""http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"">
</Report>";

            var report = new SsrsObjectFileReader().ReadXml(XDocument.Parse(xml), "Test", new SsrsObjectPath("Test"));

            Assert.That(report, Is.InstanceOf <SsrsReport>());
        }
        public void CanRead2016DataSet()
        {
            var xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<SharedDataSet xmlns:rd=""http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"" xmlns=""http://schemas.microsoft.com/sqlserver/reporting/2016/01/shareddatasetdefinition"">
  <DataSet Name="""">
    <Query>
      <DataSourceReference>DataSourceName</DataSourceReference>
    </Query>
  </DataSet>
</SharedDataSet>";

            var report = new SsrsObjectFileReader().ReadXml(XDocument.Parse(xml), "Test", new SsrsObjectPath("Test"));

            Assert.That(report, Is.InstanceOf <SsrsDataSet>());
        }
        private IEnumerable <SsrsObject> MapEntriesToSsrsObjects(ZipArchiveEntry[] items, SsrsObjectFilter filter)
        {
            var siteFilter = GetSiteFilter(filter.Site);

            foreach (var item in items)
            {
                var containerPath = basePath + SsrsObjectPath.FromFileSystemPath(Path.GetDirectoryName(item.FullName));
                using (var stream = item.Open())
                {
                    var ssrsObject = new SsrsObjectFileReader().Read(stream, Path.GetFileNameWithoutExtension(item.Name), containerPath);
                    if (filter.Excludes(ssrsObject))
                    {
                        continue;
                    }
                    if (siteFilter?.Matches(ssrsObject.Path) == false)
                    {
                        continue;
                    }
                    yield return(ssrsObject);
                }
            }
        }