2016-03-21 2 views
1

XML:Сопоставляя дети предка элемента в LXML

<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> 

Я хочу, чтобы удалить refpt ребенка заголовка, если оба названия и designum содержит 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()) 

ответ

1

"Я хочу, чтобы удалить refpt ребенка из title, если оба title и designum содержит refpt"

Следующий XPath должен возвращать refpt элементы удаляются в соответствии с указанными выше критериями:

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

Если вам нужно, чтобы убедиться, что вы только удалить refpt под title, когда он соответствие id с одной под designum, попробуйте этот XPath:

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

спасибо Ton.Very спасибо, что помогли мне получить желаемый результат. –

+0

@NavinDalal добро пожаловать! – har07

+0

Если я удаляю элемент с помощью elem = elem.getparent(). Remove (elem), он также удаляет текст элемента title. Не могли бы вы помочь в этом? –

Смежные вопросы