2

VS によって生成された構成ファイルがあります。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <applicationSettings>
    <FMR.OrdersRouter.Service.Properties.Settings>
      <setting name="UseSQL" serializeAs="String">
        <value>True</value>
      </setting>
      <setting name="MaxNumOfConnectionsPerUser" serializeAs="String">
        <value>10</value>
      </setting>
      <setting name="DataPath" serializeAs="String">
        <value>C:\Program Files\Common Files\OrdersRouter</value>
      </setting>
      <setting name="CreditChecks" serializeAs="Xml">
        <value>
          <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <string>MAXMOFMARGIN:False</string>
            <string>BRSMAXASHRAI:True</string>
            <string>ADDCASH:False</string>
            <string>BUYPOWER:True</string>
          </ArrayOfString>
        </value>
      </setting>
      <setting name="InternalOrdersRouterServerIP" serializeAs="String">
        <value>172.25.2.186</value>
      </setting>
    </FMR.OrdersRouter.Service.Properties.Settings>
  </applicationSettings>
</configuration>

ArrayOfStringから特定の文字列を取得したい。「MAXMOFMARGIN:」または「BRSMAXASHRAI:」または「ADDCASH:」または「BUYPOWER:」の後に True/False の値を取得する必要があります。

私はこれを試しました:

substring-after(/configuration/applicationSettings/FMR.OrdersRouter.Service.Properties.Settings/setting[@name="CreditChecks"]/value/ArrayOfString/string, 'BUYPOWER:')

ただし、文字列配列の最初の文字列に対してのみ機能します。

助言がありますか?

4

1 に答える 1

1

substring-after()は単一の引数を想定しているため、引数式が複数の値を返す場合、最初の値のみが考慮されます。string値が特定の 内で常に一意であると仮定すると、次のArrayOfStringようにすることができます (簡単に読みやすい例を示すために単純化されたパス):

substring-after(//ArrayOfString/string[contains(.,'BUYPOWER:')], 'BUYPOWER:')

XPath は、 text を含む要素の最初の引数として渡さsubstring-after()stringます'BUYPOWER:'

于 2016-03-30T13:24:06.947 に答える