比较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
下的 refpt
与 designum
下的 id
匹配时删除 refpt
,请尝试此 XPath :
//leg:heading/title/refpt[@id = ../../desig/designum/refpt/@id]
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 oftitle
if bothtitle
anddesignum
containsrefpt
"
下面的 XPath 应该 return refpt
元素根据上面提到的标准被删除:
//leg:heading[desig/designum/refpt]/title/refpt
如果您需要确保仅在 title
下的 refpt
与 designum
下的 id
匹配时删除 refpt
,请尝试此 XPath :
//leg:heading/title/refpt[@id = ../../desig/designum/refpt/@id]