2016-11-03 1 views
0

Ich habe ein sehr langes XML-Dokument (100k Zeilen), und ich würde gerne sehen, ob eine Zeichenfolge darin enthalten ist. Hier ist, wie ich es gerade mache:Optimierung der Suche in xml-Knoten

'HDRENT' in etree.tostring(node) 

Gibt es eine effizientere Möglichkeit, dies zu tun? Ich glaube nicht, dass es notwendig ist, das gesamte XML-Dokument zu drucken, wenn ich es einfacher/schneller machen kann.

+0

Ist der String ein Wert-Element-Tags enthaltenen withing, oder einfach nur irgendwo in der XML ist? – James

+0

@James Nein, es ist im Text des XML. – David542

Antwort

1

Try XPath:

node.xpath("count(//text()[contains(.,'HDRENT')]) > 0") 

sollte dies wahr zurück, wenn die 'HRDENT' erscheint im Text der HTML-Tags, andernfalls false.

Wenn 'HRDENT' erscheint innerhalb der Attribute des Tags verwenden:

node.xpath("count(//*[@*[contains(.,'HDRENT')]]) > 0") 
+0

Was passiert, wenn die Zeichenfolge nicht im Text des Elements enthalten ist? Zum Beispiel ist es in meinem Fall ' ...'. – David542