2016-03-21 3 views
1

XML:Vergleicht man Kinder von Vorfahren Element in 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> 

ich das REFPT Kind Titel entfernen wollen, wenn beide Titel und designum REFPT enthält.

Mein Code:

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

Antwort

1

"Ich habe das refpt Kind title entfernen möchten, wenn beide title und designumrefpt enthält"

Die folgende XPath sollte refpt Elemente zurückzukehren nach den oben genannten Kriterien entfernt werden:

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

Wenn Sie sicher vornehmen müssen, dass Sie nur refpt unter title entfernen, wenn es hat id mit dem unter designum passenden, versuchen Sie diese XPath:

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

Dank ein Ton.Very Dank es hat mir geholfen, Holen Sie sich das gewünschte Ergebnis. –

+0

@NavinDalal Sie sind herzlich willkommen! – har07

+0

Wenn ich das Element mit elem = elem.getparent(). Remove (elem) entferne, dann entfernt es auch den Text des Titelelements. Kannst du bitte dabei helfen? –