如何根据特定值从.config文件中读取某些值

时间:2016-05-19 14:19:50

标签: xml tsql config sql-server-2014

我尝试根据特定密钥从.config文件中将某个值插入SQL Server表。

简化的.config文件如下所示:

<configuration>
  <appSettings>
    <add key="supportingLocalReview" value="true" />
    <add key="localFilingReviewServiceProxyAddress" value="http://web.myflcourtaccess.com:25500/SoapOutgoingRouter.svc/SecureMtom" />
    <add key="addReceivedStamp" value="true" />
  </appSettings>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding />
    </bindings>
    <behaviors />
    <client>
      <endpoint address="http://fca.com:155/RecordMDE/RecordMDE.svc" binding="basicHttpBinding" bindingConfiguration="IntranetMtom" contract="Oasis.LegalXml.CourtFiling" name="RecordMDEServiceNew" />
    </client>
  </system.serviceModel>
</configuration>

我的初始流程来自于thread,我在其中创建了一个表,并使用OPENROWSET将整个文件插入到表中:

INSERT @ConfigTable
       SELECT a.* FROM OPENROWSET(BULK '\\Directory\Configuration\Broward_CMS_Interface_1.config', SINGLE_CLOB ) a

SELECT * FROM @ConfigTable;

我想在配置表中插入的是端点地址&#34; http://fca.com:155/RecordMDE/RecordMDE.svc&#34;如果是key="supportingLocalReview" value="true",但我不确定如何实现这一目标。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果您以这种方式阅读XML文件,则不会创建表 ...您只需按原样读取XML 。我想你的变量'@ ConfigTable'被声明为表,并允许在列中插入XML。

因此,您的SELECT * FROM @ConfigTable将返回您的XML - 但不会返回表格...

我将您的XML保存到本地磁盘上的文件中

此代码返回supportingLocalReviewendpoint address

的值
WITH MyConfigFile(AsXML) AS
(
    SELECT CAST(BulkColumn AS XML) FROM OPENROWSET(BULK 'f:\test.xml', SINGLE_CLOB ) a
)
SELECT A.B.value('(appSettings/add[@key="supportingLocalReview"]/@value)[1]','bit') AS supportingLocalReview
      ,A.B.value('(system.serviceModel/client/endpoint/@address)[1]','nvarchar(max)') AS endPointAddress
FROM MyConfigFile 
CROSS APPLY MyConfigFile.AsXML.nodes('configuration') AS A(B)

在此模板之后,将其他值放入逐表结果集应该很容易......

你想用这些值做什么应该没问题呢......