2017-02-13 20 views
0

XPathの基本は非常にダウンしていますが、XPathを使用してC#コードで次のことが可能かどうかを判断する上で問題があります。現在行っている)。複数の設定パラメータの値があるノード属性でXPathを使用する

<xml> 
    <parameters> 
     <setParameter name="SomeName" value="SomeValue" /> 
    </parameters> 
</xml> 

は、私は次のような構造で構成されたXML文書を持っています。今私がする必要があるのは、name属性の特定の値を含むsetParameterノードを取得することだけです。私はこれらの値の可能性のある一致のリストを持っているかもしれませんが、それらは完全一致ではなく、ノードの名前属性が含まなければならない値になります。

私が一致するように、「男性」の値を持っていた場合は「男性は」「somenameの」内に含まれているとして、上記構成のコードの例では、それは

が速記何ですか、ノードに戻ってくるだろうこれをする? menを含むname属性の値を持つsetParameterという名前のすべての要素についてvalueという名前のすべての属性の値を取得

+0

xpathの例はありますか? – eLRuLL

+0

非常に単純です: "parameters/setParameter" –

答えて

1

//setParameter[contains(@name, 'men')]/@value 
  • // setParameterを

setParameterという名前のすべてのノードを取得します(することができます/xml/parameters/setParameterと置き換えられる)

  • [...]現在のノードを選択するための

チェックした属性

  • name属性の場合(@name '男性')

trueを返しますが含まれています値はmen

  • /@値

value属性の値を取得します。

+0

大文字小文字を区別しませんか? – Polyfun

+0

@ Polyfunいいえ、大文字と小文字が区別されます。大文字小文字を区別しないためには、[この回答](http://stackoverflow.com/a/9805020/3283203)を参照してください。 – Kilazur

+0

OPは大文字と小文字を区別しない一致を求めました。 – Polyfun

0

のようなもの、私はワイルドカードで属性を一致させる方法があるとは思わないが、あなたはcontainsメソッドを使用することができます。

//parameters/setParameter[contains(@name, "stringexample")] 
0

があなたのXPathバージョンに応じて、これは仕事やない場合があります:

//setParameter[matches(@name,"men", "i") or matches(@name,"else", "i")] 

これは"men"か何か"else"が含まれていname属性で<setParameter>と一致する必要があります。大文字と小文字を区別しません。

結果を教えてください。

関連する問題