2012-05-03 6 views
0

私は約400個のレポートをインベントリする必要があり、すべてのSQLをレポートから取り出す必要があります。私はXmlDocument結果をロードし、VSの情報をナビゲートし、私が探している情報を見つけることができます。私は、次の要素の結果ビューをドリルダウンする必要がResults ViewSSRSレポートのデータの結果ビューを列挙します

をクリックする必要があり、各報告書の中で

{Element, Name="Report"} 
{Element, Name="DataSet"} 
{Element, Name="Query"} 
{Element, Name="Command Text"} 

私は、元素コマンドテキストを取得しようとしているが、私はenurmateまたはそのレベルにアクセスする方法がわかりませんよ。

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) 
        { 


        } 

       } 

      } 
+0

は、あなたがXMLの構造化された方法の例を与えることができますか? LINQの拡張機能を使用したいと思っています。 '.Descendants(...)'、しかし、私はあなたに詳細を知らせないであなたにアドバイスする方法を正確には分かりません。 –

+0

@TimS。私は構造体を提供する方法についてもわからない、私は "Command Text"レベルでinnerxmlが必要なものであることを知っている –

答えて

0

を/私は本当にあなたが後にしているのか分からないし、私はあなたのXMLの構造を見ていないので、私は野生の推測を取っているし、これはおそらく最適ではありません。ここで私が使用していたコードです機能的だけど、ちょっと変なことをする必要がなければ何が楽しいですか?

IEnumerable<XElement> GetCommandText(string file) 
    { 
    XDocument xdoc = XDocument.Load(file); 
    return xdoc.Root.Elements().Where(r => (string)r.Attribute("Name") == "Command Text"); 
    } 

あなたはより多くのヘルプをしてくださいしたい場合は、かなりあなたはレポートのレポートサーバーレポートを持つことができ、元のXMLが:)

0

どのように見えるかの例を投稿してください。 jcoeのフォーラム記事を参照してください。ホーム»記事のディスカッション»記事のディスカッション»マイケル・デイビス»レポートサーバ診断レポートPage 9Page 10

またはあなたの現在のアプローチを継続するために、ここにあなたがRDLファイルから後にしているのかを解析するLINQクエリです:

 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 }; 
関連する問題