2016-10-07 3 views
1

I-Code habe für mehr XML-Dateien aus verschiedenen Verzeichnissen Parsen:mehrere XML-Datei aus mehreren Ordnern analysieren, gleiches Format hat, und speichern Sie Text spezifische Knoten in einer Variablen

for file in glob.iglob(os.path.join(dir, '100/**/*.xml')): 
    with open(file) as f: 
     data = etree.parse(f) 

Format von XML-Dateien ist:

<us1> 
<us2> 
<p-r> 
<document-id> 
<country>US</country> 
<doc-number>07640598</doc-number> 
<kind>B1</kind> 
<date>20100105</date> 
</document-id> 
</p-r> 
<ab> 
<c> 
<document-id> 
<country>US1</country> 
<doc-number>07640598989834</doc-number> 
<kind>B5</kind> 
<date>20100106</date> 
</document-id> 
</c> 
</ab> 
</us2></us1> 

Nun, ich möchte Text in "Doc-Nummer" zwischen allen xml-Dateien im Verzeichnis extrahieren und speichern in einer Variablen .. extrahierte Daten ist 07640598. Wie extrahiere ich ausgewählte Werte und speichern es in einer Variablen?

Antwort

0

können Sie einfach XPath verwenden Ausdruckselement von bestimmten Namen in ElementTree, zum Beispiel zu bekommen:

doc_no = data.find('.//doc-number') 
if doc_no is not None: 
    print doc_no.text 

Leichte Veränderung im XPath-Ausdruck, wenn Sie doc-number zu bekommen bedeutete, dass Kind p-r ist:

doc_no = data.find('.//p-r/doc-number') 
+1

ya, das ist eine Möglichkeit. Aber was soll ich "doc_no" von "p-r" bekommen und nicht von anderen Tags? – curiouscoder

+0

danke @ har07 für Hilfe. – curiouscoder

+0

@ Curiouscoder Kein Problem. Vergessen Sie nicht, die Antwort zu akzeptieren ([mehr Informationen über * Annahme der Antwort *] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)) – har07

Verwandte Themen