Maven Pom xml in Python lesen

8

Ich habe eine Pom-Datei, die folgendermaßen definiert ist:

%Vor%

Und ich suche ein Wörterbuch aus dem name & amp; value Elemente unter property unter dem mappings Element.

Also, was ich versuche herauszufinden, wie man alle möglichen mappings -Elemente (im Falle mehrerer Build-Profile) bekommt, damit ich alle property -Elemente darunter bekommen kann und über Unterstützte XPath-Syntax Folgendes sollte alle möglichen Text / Wert-Elemente ausgeben:

%Vor%

Was nichts zurückgibt. Ich habe versucht, nur alle mappings Elemente auszudrucken und bekomme:

%Vor%

Und wenn ich alles von root ausdrucke bekomme ich:

%Vor%

Was mich dazu brachte zu drucken:

%Vor%

Aber das funktioniert auch nicht.

Irgendwelche Vorschläge wären großartig.

Danke,

    
Welsh 28.05.2013, 22:46
quelle

2 Antworten

4

Ok, habe herausgefunden, dass ich, wenn ich maven stuff aus dem project -Element lösche, so dass es nur <project> gibt:

%Vor%

Was dazu führen würde:

%Vor%

Wenn ich jedoch das Maven-Zeug oben lasse, kann ich das tun:

%Vor%

Was ergibt:

%Vor%

Allerdings würde ich gerne herausfinden, wie ich vermeiden kann, das Maven-Konto zu berücksichtigen, da es mich in dieses eine Format einsperrt.

BEARBEITEN:

Ok, ich habe es geschafft, etwas etwas wortreicher zu bekommen:

%Vor%     
Welsh 29.05.2013 02:29
quelle
1

Ich habe eine pom.xml mit Python geändert. Es scheint, dass etree nicht sehr gut dokumentiert ist. Es dauerte eine Weile, bis alles funktionierte, aber es scheint jetzt zu funktionieren.

Wie Sie im folgenden Codeausschnitt sehen können, verwendet Maven den Namensraum http://maven.apache.org/POM/4.0.0 . Das Attribut xmlns im Stammknoten definiert den Standard-Namespace. Das Attribut xmlns:xsi definiert ebenfalls einen Namensraum, wird aber nur für xsi:schemaLocation verwendet.

%Vor%

Um Tags wie profile in Methoden wie find zu verwenden, müssen Sie auch den Namespace angeben. Zum Beispiel könnten Sie Folgendes schreiben, um alle profile -Tags zu finden.

%Vor%

Eine weitere wichtige Sache ist // hier. Wenn Sie Ihre XML-Datei verwenden, würde */ dasselbe Ergebnis für dieses Beispiel haben. Aber funktioniert nicht für andere Tags wie mappings . Da * nur eine Ebene darstellt, kann */child auf parent/tag oder xyz/tag erweitert werden, nicht jedoch auf xyz/parent/tag .

Ich denke, das sind die Hauptprobleme in Ihrem obigen Code. Sie müssen // anstelle von */ verwenden, um beliebige Unterelemente anstelle von direkten Kindern zuzulassen. Und Sie müssen den Namespace angeben. Damit können Sie so etwas machen, um alle Zuordnungen zu finden:

%Vor%

Aber die Namespaces wie oben zu spezifizieren ist nicht sehr nett. Sie können eine Namespace-Map definieren und sie als zweites Argument für find und findall angeben:

%Vor%     
JojOatXGME 17.04.2016 02:31
quelle

Tags und Links