如何根据特定值从 .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 supportingLocalReview
和 endpoint 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 明智的结果集中应该很容易...
你想用这些值做什么应该没问题...
我正在尝试根据特定键从 .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 supportingLocalReview
和 endpoint 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 明智的结果集中应该很容易...
你想用这些值做什么应该没问题...