2016-05-29 57 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