2014-10-12 98 views
0

首先,我是Xpath中的新成员。我发现了很多使用Xpath查询元素是否存在的样本。但我无法实现我想要的样本。我的xml是这样的:带谓词的Xpath注释

<a> 
    <b> 
     <c>xxx</c> 
     <d>yyy</d> 
    </b> 
</a> 
<a> 
    <b> 
     <d>zzz</d> 
    </b> 
</a> 

而我只想要“a”项既存在“c”也存在“d”。所以我做到了这一点:

@XPath("a/b[boolean(c) and boolean(d)]") 
private A a; 

有人请告诉我正确的做法吗?

由于

阿里

回答

1
a[descendant::c and descendant::d] 

选择与descendant节点cda节点。

请注意,您的XML示例无效,因为它缺少根节点(可能它只是一个示例,而不是您的实际文档...)。

+0

感谢您的回答。其实我认为它应该是这样的:a/b [// c和// b]。我已经尝试过你的方式和我的,但它仍然jaxb仍然给所有的“a”元素:( – Neron 2014-10-12 10:47:55

+0

它取决于你想如何具体。你指定''a/b''下的''c'和'd'节点与你原来的查询 - 你的问题只是说你想''''节点,其中'c'和'd'是后代。您的评论中的查询将无法正常工作,因为'/ /'搜索根目录下的任何节点节点 - 你想要的节点是'a'的后代,如果你有一个特定的输出,你需要在你的问题中清楚地陈述它。 – 2014-10-12 11:02:59

+0

你说的是“a b和c”,我有纠正它:) thx。我已经使用了后代,但它没有带任何元素,即使有合适的:(我不知道是否是因为注释 – Neron 2014-10-12 11:07:18