在单个节点上使用XPath将返回所有节点中的元素

我正在parsing一个如下所示的XML文档:

<MyBook> <title>Favorite Poems</title> <issn>123-456</issn> <pages>45</pages> </MyBook> <MyBook> <title>Chocolate Desserts</title> <issn>654-098</issn> <pages>100</pages> </MyBook> <MyBook> <title>Jabberwocky</title> <issn>454-545</issn> <pages>19</pages> </MyBook> 

我使用xpath来取出MyBook节点,像这样遍历它们:

 xmldoc.xpath("//MyBook").each do |node| mytitle=node.xpath("//title").text puts mytitle end 

输出如下所示:

 Favorite PoemsChocolateDessertsJabberwocky Favorite PoemsChocolateDessertsJabberwocky Favorite PoemsChocolateDessertsJabberwocky 

就好像这个节点真的是整个xmldoc一样。 但是,如果我打印出迭代器中的节点,每次都是我所期望的,只是一个MyBook节点。 我需要能够从每个节点中连续地取出子节点​​,而不是从整个文档中的所有相同types的子节点。 我究竟做错了什么?

当你使用//title这将search从文档根目录开始的所有<title>元素。 如果要查找标题,即使它们嵌套在其他元素中,也可以使用title来查找子标题或.//title

从标题xpathexpression式中删除//