2012-04-04 59 views
0

我正在使用TinyXPath來增強現有的測試工具,以便可以提取和使用來自客戶XML結構的數據。在TinyXPath中如何通過元素內容索引來查詢數據

的XML看起來像這樣

<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> 

鑑於上述的結構,這是我沒有的,我需要能夠構建XPath表達式爲TinyXPath控制。簡單地說,當正確的子標籤值匹配(解析爲真)時,TinyXPath需要返回SomeSetting1/2字段中的值,以便測試應用程序可以使用它們。 。

我曾嘗試以下,但在同程奮力使用子元素(通常我會想到使用屬性的索引這是我嘗試不返回結果(例如啓用/禁用): -

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

//設置/ child :: node()(如果你只是希望啓用/禁用文本而不是節點,最後添加/ text())或者你是否只想得到標籤A和B? – JWiley 2012-04-04 13:42:25

+0

測試必須首先爲計劃「標記」A返回SomeSetting1&2的文本值,然後返回計劃「標記爲B」的文本值。 – mactwixs 2012-04-05 12:36:41

回答

0

此XPath會返回你要查找的內容與給定XML:

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

這個XPath還將CONCAT |添加標籤和組檢查:

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

而這一次將它們組合內外標籤檢查:

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

希望這有助於!

+0

非常感謝我今天晚些時候會嘗試 – mactwixs 2012-04-10 08:43:47

+0

已經無法獲得tinyxpath從上面返回任何結果。儘管我可以獲得// LinkData/Plan/Label/text()來工作 - 返回A,B,C等,但是將[]添加到查詢中似乎讓它感到不安。 – mactwixs 2012-04-13 09:01:55

相關問題