2012-05-01 52 views
2

所以我下面从另一个问题,我会在这里复制一个例子:XPath根据childs的子值返回多个值来选择元素?

“尝试基于它的一个价值选择的元素的孩子的孩子”

./book[author/name = 'John'] 

“旺旺所有书籍,其中作者的名字=“约翰”

xml文档”

<list> 
    <book> 
     <author> 
     <name>John</name> 
     <number>4324234</number> 
     </author> 
     <title>New Book</title> 
     <isbn>dsdaassda</isbn> 
    </book> 
    <book>...</book> 
    <book>...</book> 
</list> 

现在,无论出于何种原因,当我使用上面的XPath,它d OES选择书籍节点,但它选择所有这些节点,而不仅仅是author = John。是否有理由为什么xpath会忽略这一点,并拉动每个书籍节点?

我希望这是有道理的。谢谢!

+0

你确定选择了所有'book'节点?您的xpath看起来不错 –

+0

@AlehDouhi无可否认,我正在使用xpath来处理将Ruby映射到Ruby对象的Ruby gem。但是,文件很渺茫,似乎并不普遍。我希望XML示例丢失了一些东西,但我认为你是对的。 XPath应该可以工作,但在我的Ruby应用程序的上下文中,它只是抓住一切。叹。 – librarion

回答

2

下面应该工作:

/list/book[author/name/. = 'John'] 

/list/book[author/name/text() = 'John']