按标签查找节点,但不查找具有相同标签Xpath python3.4的子节点

时间:2015-02-11 14:00:56

标签: xml python-3.x xpath

我有xml文件,如:

<root>
    <book>
        <first>
           <book>1</book>
           <book>2</book>
        </first>
     </book>
 </root>

使用Xpath(谓词= tree.xpath(&#39; // book&#39;))我可以找到所有书籍节点(3个节点),例如:

<book>
    <first>
       <book>1</book>
       <book>2</book>
    </first>
 </book>
 <book>1</book>
 <book>2</book>

但我怎样才能找到其父节点不是书籍节点的书籍节点?即如果发现节点簿不看其子节点以找到更多的书节点。 在我的例子中,我应该只有:

<book>
    <first>
       <book>1</book>
       <book>2</book>
    </first>
 </book>

由于

1 个答案:

答案 0 :(得分:1)

只需使用

tree.xpath('//book[not(ancestor::book)]'))

不会选择嵌套到其他book元素中的book个元素。我假设是

  

找到其父节点不是书籍节点的书籍节点

您实际上是指找到book个没有祖先的元素book元素。

这是正确的XPath表达式,我不能对你的代码发表评论,因为你没有显示它。