2016-05-29 60 views
2

如果查詢返回該XML孫子元素的XPath測試值?

<hudson> 
    <job> 
     <displayName>test1</displayName> 
     <url>https://something/test1</url> 
     <lastBuild> 
      <building>true</building> 
      <builtOn>server1</builtOn> 
     </lastBuild> 
    </job> 
    <job> 
     <displayName>test2</displayName> 
     <url>https://something/test2</url> 
     <lastBuild> 
      <building>false</building> 
      <builtOn>server1</builtOn> 
     </lastBuild> 
    </job> 
    <job> 
     <displayName>test3</displayName> 
     <url>https://something/test3 
     </url> 
     <lastBuild> 
      <building>true</building> 
      <builtOn>server2</builtOn> 
     </lastBuild> 
    </job> 
    <job> 
     <displayName>test4</displayName> 
     <url>https://something/test4</url> 
    </job> 
    <job> 
     <displayName>test5</displayName> 
     <url>https://something/test5</url> 
    </job> 
</hudson> 

我如何進一步使用XPath過濾只得到了就業機會,其中標籤building是真實的,並排除那些標籤lastBuild不存在?

對於我用

&xpath=/hudson/job/lastBuild[contains(building,'true')] 

但不知道如何擺脫那些沒有標籤lastBuild的第一個選項...

+0

「lastBuild」不存在?你確定這是你問的嗎?我問這是因爲你的結果只會返回那些名爲lastBuild的元素..所以它本身似乎已經排除了那些沒有lastBuild的... –

+0

然後你會怎麼做xpath查詢?我想獲得完全相同的信息,但只有那些你已經在做lastBuild/building == true – hosselausso

+0

的工作......在我看來......你檢查過這個查詢的輸出嗎? –

回答

1

對於您展示XML,這個XPath,

/hudson/job[lastBuild/building = 'true'] 

將選擇那些job元素與lastBuild元素,其中buildingtrue

<job> 
    <displayName>test1</displayName> 
    <url>https://something/test1</url> 
    <lastBuild> 
     <building>true</building> 
     <builtOn>server1</builtOn> 
    </lastBuild> 
</job> 
<job> 
    <displayName>test3</displayName> 
    <url>https://something/test3</url> 
    <lastBuild> 
     <building>true</building> 
     <builtOn>server2</builtOn> 
    </lastBuild> 
</job> 
+0

這就是我在找的東西。我在錯誤的地方使用了「[]」。謝謝! – hosselausso