2016-03-30 30 views
1

は私がVSによって生成された設定ファイルがあります。XML ArrayOfStringで特定の文字列を取得する方法は?

<?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 から特定の文字列を取得したいです。私はこの試みた

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

をしかし、それはのためにのみ動作または "BRSMAXASHRAI:" または "ADDCASH:" または "BUYPOWER":私は "MAXMOFMARGIN" の後に偽/値がTrue取得する必要があります文字列配列の最初の文字列

提案がありますか?

+0

ターゲット ''が ''の最初の子要素である場合にのみXPathが機能することを意味していますか?(上の例では、MAXMOFMARGIN: – har07

+0

はい。これはまさに私の意味です。 これは、パスがサブ文字列の最初の引数の後に返すすべての子文字列の間に新しい行があるためだと思います。 – user2787787

答えて

0

substring-after()は、引数の式が複数の値を返すときは、最初の値だけが考慮されます。 (パスがちょうど読みやすい例を与えるために簡略化され)、あなたはこの方法を行うことができ、string値が与えられたArrayOfString内常に一意であると仮定すると:

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

XPathは含まれていsubstring-after()string要素の最初の引数として渡しますテキスト'BUYPOWER:'

+0

NICEの後です。それは動作します:-)ありがとう 今、私のnsisのscripファイルに使いたいです。また、NsisXMLプラグイン(Wizou製)も使用しています。 varにsubstring-after()の戻り値をどうやって取得するのですか? – user2787787

+0

@ user2787787ようこそ。問題の問題を解決するので、この回答を[受け入れる](http://stackoverflow.com/help/someone-answers)と考えてください。 – har07

+0

@ user2787787残念ながら、私はNsisXMLについて何も知らない – har07

関連する問題