2012-04-04 6 views
0

TinyXPathを使用して既存のテストツールを強化し、顧客のXML構造のデータを取得して使用することができます。TinyXPathでは要素コンテンツでインデックスされたデータをクエリする方法

XMLは私がTinyXPathためにXPath式を構築できるようにする必要があるのを制御することはできません上記の構造を考えると、この

<Platform> 
    <LinkData> 
    <Plan> 
     <Label>A</Label> 
     <Settings> 
      <SomeSetting1>ENABLED</SomeSetting1> 
      <SomeSetting2>ENABLED</SomeSetting2> 
     </Settings> 
    </Plan> 
    <Plan> 
     <Label>B</Label> 
     <Settings> 
      <SomeSetting1>ENABLED</SomeSetting1> 
      <SomeSetting2>DISABLED</SomeSetting2> 
     </Settings> 
    </Plan> 
    </LinkData> 
</Platform> 

、のように見えます。単純に言えば、TinyXPathは正しい子ラベル値が一致したときに与えられたSomeSetting1/2フィールドの値を返す必要があり(trueに解決されます)、テストアプリで使用できます。

私は以下のことを試しましたが、子要素を使用してインデックスを作成する方法が苦労しています(通常は属性の使用が期待されます)。結果は返されません(例:ENABLED/DISABLED):

Platform/LinkData/Plan[child::Label='A']/Settings/SomeSetting1/text() 
Platform/LinkData/Plan[child::Label='A']/Settings/SomeSetting2/text() 
Platform/LinkData/Plan[child::Label='B']/Settings/SomeSetting1/text() 
Platform/LinkData/Plan[child::Label='B']/Settings/SomeSetting2/text() 

TinyXPathの達人からの任意の更なるヘルプははるかに高く評価されるだろう - ありがとう

+0

//設定/子:: node()(ノードの代わりに有効/無効のテキストを必要とする場合は、最後に/ text()を追加してください)またはラベルAとBだけを取得しようとしていますか? – JWiley

+0

テストでは、最初にSomeone1と2のテキスト値をPlan 'Labeled' Aのために、次にPlan 'Labeled' Bのために返す必要があります。ありがとう。 – mactwixs

答えて

0

このXPathは、あなたが与えられたXMLで探しているものを返します!

//Settings/child::node()/text() 

このXPathはまた、連結|によってラベルおよびグループのチェックを追加します。

//LinkData/Plan[Label/text()='A']/Settings/child::node()/text() | //LinkData/Plan[Label/text()='B']/Settings/child::node()/text() 

そして、この1は、ラベルのチェックの内側にそれらの両方を兼ね備え:

//LinkData/Plan[Label/text()='A' or Label/text()='B']/Settings/child::node()/text() 

・ホープ、このことができます!

+0

多くのありがとう私はそれを今日後で試してみます – mactwixs

+0

上記の結果を返すためにtinyxpathを取得できませんでした。私は// LinkData/Plan/Label/text()を動作させることができますが、A、B、Cなどを返しますが、[]をクエリに追加するとそれが動揺しているようです。 – mactwixs

関連する問題