比较lxml中祖先元素的子元素

Comparing children of ancestor element in lxml

XML :

<leg:heading nline="true">  
  <desig inline="true" searchtype="SECT-NUM"> 
    <designum>
      <refpt type="ext" id="USM.A000001y1966e.S1"/>1.
    </designum> 
  </desig>  
  <title inline="true" searchtype="SECT-TITLE"> 
    <refpt type="ext" id="USM.A000001y1966e.S1"/>Short title, commencement and application
  </title> 
</leg:heading>

如果 title 和 designum 都包含 refpt,我想删除 title 的 refpt 子项。

我的代码:

for elem in doc.xpath('//leg:heading',namespaces={'leg':'http://www.lexis-nexis.com/glp/leg'}):
    for element in elem.getiterator():
        if(element.tag=='refpt'):
            print(element.tag.getparent()) 

"I want to remove the refpt child of title if both title and designum contains refpt"

下面的 XPath 应该 return refpt 元素根据上面提到的标准被删除:

//leg:heading[desig/designum/refpt]/title/refpt

如果您需要确保仅在 title 下的 refptdesignum 下的 id 匹配时删除 refpt,请尝试此 XPath :

//leg:heading/title/refpt[@id = ../../desig/designum/refpt/@id]