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

How to read certain values from .config file based on a particular value

我正在尝试根据特定键从 .config 文件中将特定值插入 SQL 服务器 table。

简化的 .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,我在其中创建了一个 table 并使用 OPENROWSET 将整个文件插入到 table 中:

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

SELECT * FROM @ConfigTable;

我想在配置 table 中插入的是端点地址“http://fca.com:155/RecordMDE/RecordMDE.svc”,如果 key="supportingLocalReview" value="true" 但我不确定如何完成此操作。

有什么建议吗?

如果您以这种方式阅读 XML 文件,您将不会 创建 table...您只是阅读 XML 原样。我假设您的变量“@ConfigTable”声明为 table 并允许在列中插入 XML。

因此您的 SELECT * FROM @ConfigTable 将 return 您的 XML - 但不是 table...

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

此代码 returns 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)

按照此模板将其他值放入 table 明智的结果集中应该很容易...

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