2013-05-08 1 views
0

J'essaie de modifier un connectionString dans un fichier RDL, qui consiste en des nœuds xml dynamiquement. mais je suis seulement en mesure de récupérer la racine en utilisant un / Je ne peux pas récupérer tous les autres noeuds par exemple lorsque j'essaie de récupérer le connectString il apparaît comme nul.Comment modifier dynamiquement la chaîne de connexion dans un fichier RDl?

XmlDocument xml = new XmlDocument(); 
xml.Load(selectedFiles[0].ToString()); 
var connectionString = xml.SelectSingleNode("/"); 

le xml pour le fichier RDL:

<?xml version="1.0" encoding="utf-8"?> 
<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:cl="http://schemas.microsoft.com/sqlserver/reporting/2010/01/componentdefinition" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition"> 
    <AutoRefresh>0</AutoRefresh> 
    <DataSources> 
    <DataSource Name="DataSource1"> 
     <ConnectionProperties> 
     <DataProvider>SQL</DataProvider> 
     <ConnectString>Data Source=gbr-t-sql-001;Initial Catalog=Neptune2Dev</ConnectString> 
     <IntegratedSecurity>true</IntegratedSecurity> 
     </ConnectionProperties> 
     <rd:SecurityType>Integrated</rd:SecurityType> 
     <rd:DataSourceID>70fcaa8f-d76a-4919-a53c-ba313ca99926</rd:DataSourceID> 
    </DataSource> 
    </DataSources> 
    <DataSets> 
    <DataSet Name="DataSet1"> 
     <Query> 
     <DataSourceName>DataSource1</DataSourceName> 
     <QueryParameters> 
      <QueryParameter Name="@profileID"> 
      <Value>=Parameters!profileID.Value</Value> 
      </QueryParameter> 
     </QueryParameters> 
     <CommandType>StoredProcedure</CommandType> 
     <CommandText>Report_BylineSummary</CommandText> 

Répondre

0

Vous devez exécuter une requête XPath pour obtenir la chaîne de connexion. Il devrait être quelque chose comme ceci:

/Rapport/DataSources [@ Name = "DataSource1"]/ConnectionProperties/ConnectString

Mais en prenant soin de traiter correctement les espaces de noms.

Voir cet article:

http://www.codeproject.com/Articles/9494/Manipulate-XML-data-with-XPath-and-XmlDocument-C

+0

Il est comme nulle var connectionString = xml.SelectSingleNode ("/ Rapport/DataSources [@Name = \" DataSource1 \ "]/ConnectionProperties/ConnectString") – Xerxes

+0

Comme je l'ai dit, vous devez gérer correctement les espaces de noms pour que cela fonctionne. http://support.microsoft.com/kb/316913 – Oscar

Questions connexes