Vista de resultados de enumeración para datos en un informe de SSRS
Frecuentes
Visto 309 veces
0
Tengo que inventariar unos 400 informes, y lo que debo hacer es sacar todo el sql de los informes. Puedo XmlDocument cargar los resultados y navegar por la información en VS y encontrar la información que estoy buscando.
En cada informe tengo que hacer clic Results View
Tengo que desglosar la vista de resultados para los siguientes Elementos.
{Element, Name="Report"}
{Element, Name="DataSet"}
{Element, Name="Query"}
{Element, Name="Command Text"}
Estoy tratando de llegar al texto de comando elemental, pero no estoy seguro de cómo enurmar o acceder a ese nivel. aquí está el código que estoy usando:
string[] Fil_Info = Directory.GetFiles(dir);
foreach (string file in Fil_Info)
{
XmlDocument doc = new XmlDocument();
doc.Load(file);
//Console.WriteLine(doc.Value.ToString());
XmlAttributeCollection attrColl =doc.DocumentElement.Attributes;
foreach (XmlAttribute xmlAtt in attrColl)
{
XmlAttributeCollection attrColl2 = xmlAtt.Attributes;
foreach (XmlAttribute xmlAtt2 in attrColl2)
{
}
}
}
2 Respuestas
0
Realmente no sé lo que busca y no he visto la estructura de su XML, así que estoy haciendo una suposición descabellada y probablemente esto no sea óptimo/funcional, pero bueno, ¿cuál es la diversión si no necesita modificarlo? ¿derecho?
IEnumerable<XElement> GetCommandText(string file)
{
XDocument xdoc = XDocument.Load(file);
return xdoc.Root.Elements().Where(r => (string)r.Attribute("Name") == "Command Text");
}
si desea más ayuda, por favor publique un ejemplo de cómo se ve el XML original :)
contestado el 03 de mayo de 12 a las 17:05
0
Puede hacer que el servidor de informes informe sobre los informes. Vea las publicaciones del foro de jcoe sobre Consultas XML en Inicio » Discusiones de artículos » Discusiones de artículos por autor » Discutir el contenido publicado por Michael Davis » Informes de diagnóstico del servidor de informes página 9 y página 10.
O para continuar con su enfoque actual, aquí hay una consulta de Linq que analizará lo que busca del archivo rdl:
XNamespace reportDefinition = "http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition";
XNamespace reportDesigner = "http://schemas.microsoft.com/SQLServer/reporting/reportdesigner";
XDocument reportXml = XDocument.Load(@"MyReport.rdl");
var reportQueries = from XElement dataSetElement in reportXml.Element(reportDefinition + "Report").Element(reportDefinition + "DataSets").Elements(reportDefinition + "DataSet")
let dataSetName = dataSetElement.Attribute("Name").Value
let queryCommandText = dataSetElement.Element(reportDefinition + "Query").Element(reportDefinition + "CommandText").Value
let queryDataSourceName = dataSetElement.Element(reportDefinition + "Query").Element(reportDefinition + "DataSourceName").Value
select new { DataSetName = dataSetName, QueryCommandText = queryCommandText, QueryDataSourceName = queryDataSourceName };
contestado el 03 de mayo de 12 a las 18:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c# xml or haz tu propia pregunta.
¿Puede dar un ejemplo de cómo está estructurado el XML? Creo que querrás usar extensiones LINQ, por ejemplo
.Descendants(...)
, pero no estoy seguro exactamente de cómo aconsejarte sin más detalles. - Tim S.@TimS. Ni siquiera estoy seguro de cómo proporcionar la estructura, sé que en el nivel de "Texto de comando" el innerxml es lo que necesito: user222427