XML-Datei mit Standard-Namespace nicht schreiben [duplizieren]

7

Ich schreibe ein Python-Skript, um Visual Studio-Projektdateien zu aktualisieren. Sie sehen so aus:

%Vor%

Der folgende Code liest und schreibt dann die Datei:

%Vor%

Python gibt einen Fehler in der letzten Zeile aus und sagt:

%Vor%

Das ist überraschend, weil ich gerade lese und schreibe, ohne dazwischen zu schneiden. Visual Studio lehnt das Laden von XML-Dateien ohne einen Standardnamespace ab, daher ist das Auslassen nicht optional.

Warum tritt dieser Fehler auf? Anregungen oder Alternativen willkommen.

    
Andomar 20.08.2013, 15:17
quelle

3 Antworten

23

Dies ist ein Duplikat für XML-Dateien mit ElementTree speichern

Die Lösung besteht darin, Ihren Standard-Namespace VOR dem Parsen der Projektdatei zu definieren.

%Vor%

Dann schreiben Sie Ihre Datei als

aus %Vor%

Sie haben Ihre Datei erfolgreich gerundet. Und vermieden die Schaffung von ns0 Tags überall.

    
WombatPM 20.08.2013, 17:05
quelle
4

Ich denke, dass lxml Namespaces besser verarbeitet. Es zielt auf eine ElementTree-ähnliche Schnittstelle, verwendet aber xmllib2 darunter.

%Vor%     
tdelaney 20.08.2013 16:21
quelle
0

Das war die nächste Antwort, die ich für mein Problem finden konnte. Putting die:

%Vor%

kurz bevor das Parsen meiner Datei nicht funktionierte.

Sie müssen den spezifischen Namespace finden, den die XML-Datei verwendet, die Sie laden. Dazu habe ich das Tag des Elements des ET-Tree-Knotens ausgedruckt, das mir meinen zu verwendenden Namespace und den -Tag Namen gab, kopiere diesen Namespace in:

%Vor%

bevor Sie mit der Analyse Ihrer Datei beginnen, dann sollten alle Namespaces beim Schreiben entfernt werden.

    
JMStudios.jrichardson 15.06.2015 18:11
quelle

Tags und Links