Python Version 2.7: XML ElementTree: Wie man bestimmte Elemente eines Kindelements durchläuft, um eine Übereinstimmung zu finden

8

Ich bin ein Programmierneuling und benutze nur selten Python, also bitte ertrage mich, während ich versuche zu erklären, was ich versuche zu tun:)

Ich habe folgendes XML:

%Vor%

Ich möchte hier nur bestimmte "SWOL28" -Werte aktualisieren, wenn sie mit dem patientCode und dem VisitDate übereinstimmen, die ich in einer Textdatei gespeichert habe. Wie ich es verstehe, enthält Elementbaum keine Elternreferenz, als ob es tun würde, ich könnte einfach findall () von der Wurzel aus verwenden und rückwärts von dort arbeiten. So wie es hier steht, ist mein Pseudocode:

  1. Für jede Zeile in der Textdatei:
  2. Setzen Sie Visit_Date Patient_Code New_SWOL28 in Variablen
  3. Für jedes Patientenelement:
  4. Wenn patientCode = Patient_Code
  5. Für jedes Besuchselement:
  6. Wenn VisitDate = Visit_Date
  7. Wenn für diesen Besuch ein SWOL28-Element existiert
  8. Aktualisieren Sie SWOL28 auf New_SWOL28

Aber ich stecke bei Schritt Nr. 5 fest. Wie bekomme ich eine Liste von Besuchen, die durchlaufen werden? Entschuldigung, wenn das eine sehr dumme Frage ist, aber ich habe hoch und tief nach einer Antwort gesucht, die ich Ihnen versichere! Ich habe meinen Code auf das nackte Beispiel des Teils reduziert, den ich unten beheben muss:

%Vor%

Ich wäre sehr dankbar für jegliche Ideen, die Sie von mir haben könnten. Ich bin kein Programmierer natürlich, das ist sicher!

Vielen Dank im Voraus, Sarah

Bearbeiten 1:

Auf den Rat von SVK unten versuchte ich folgendes:

%Vor%

Aber die einzige Ausgabe, die ich bekomme, ist: Geduldig Geduldig und keine der unteren Tags. Irgendwelche Ideen?

    
Sarah-Ann 26.03.2013, 17:01
quelle

4 Antworten

4

Dies wird von Ihnen nicht getestet, sollte ziemlich nahe an dem sein, was Sie wollen.

%Vor%     
Peter Enns 26.03.2013, 17:28
quelle
5

Sie können über alle "visit" -Tags direkt unter einem Element "element" wie folgt iterieren:

%Vor%

Sie können das erste direkte Kind eines Elements finden, das einem bestimmten Tag entspricht:

%Vor%

Es sieht so aus, als müssten Sie zuerst das Element "visits" suchen, welches das übergeordnete Element von "visit" ist, und dann die "visit" -Kinder durchlaufen. Wenn Sie diese zusammenfügen, haben Sie so etwas:

%Vor%

Betrachten Sie allgemein den Abschnitt "Interessante Elemente finden" in der Dokumentation zu xml.etree.ElementTree: Ссылка

    
svk 26.03.2013 17:04
quelle
0

Sie können einen CssSelector verwenden, um die gewünschten Knoten vom Element Patient zu erhalten:

%Vor%

Sie können dasselbe tun, um den patientCode Tag und das SWOL28-Tag zu erhalten Dann können Sie den Text der Elemente mit element.text

aufrufen und ändern     
niroyb 26.03.2013 17:09
quelle
0

Wenn Sie lxml.etree verwenden, können Sie xpath verwenden, um die Elemente zu finden, die Sie aktualisieren müssen.

z. B.

%Vor%

Also

%Vor%

Sollte Ihnen etwas geben, das enthält:

%Vor%     
MattH 26.03.2013 17:39
quelle

Tags und Links