Ich bin neu hier und habe bis jetzt keine Erfahrung in python. Nun will ich in einem xml File, das folgendermassen beginnt, den Text des Tags <ProjectVersion> durch einen neuen (eine neue Version) ersetzen. Der Rest der Datei soll gleich bleiben.
Beginn der xml Datei:
Code: Alles auswählen
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<FileVersion>1.0.0.0</FileVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{2d33b7f3-0195-487c-b677-008e32b2b56b}</ProjectGuid>
[b] <ProjectVersion>0.0.0.5</ProjectVersion>[/b]
<SubObjectsSortedByName>True</SubObjectsSortedByName>
<DownloadApplicationInfo>true</DownloadApplicationInfo>
<WriteProductVersion>false</WriteProductVersion>
<GenerateTpy>false</GenerateTpy>
<Name>LibWagnerComponents</Name>
<ProgramVersion>3.1.4024.0</ProgramVersion>
...
</Project>
Code: Alles auswählen
import xml.etree.ElementTree as ET
def update_project_version(file_path, file_path_new, new_version):
# XML-Datei einlesen
tree = ET.parse(file_path)
root = tree.getroot()
# <ProjectVersion>-Tag finden und aktualisieren
for project_version in root.findall('ProjectVersion'):
project_version.text = new_version
# Änderungen in die XML-Datei zurückschreiben
tree.write(file_path_new, encoding='utf-8', xml_declaration=True)
if __name__ == "__main__":
# Name der XML-Datei (im selben Verzeichnis)
xml_file_path = 'Example.xml'
xml_file_path_new = 'Example_new.xml'
# Neue Version
new_version = '0.0.0.10'
# Funktion aufrufen, um die Version zu aktualisieren
update_project_version(xml_file_path, xml_file_path_new, new_version)
print(f'Die <ProjectVersion> wurde auf {new_version} aktualisiert.')
1. Die Version wird gar nicht updatet. Das heisst, dass das Tag nicht gefunden wurde.
2. In der Ausgabedatei hat es am Anfang jedes Tags so einen namespace Eintrag (ns0:)
<?xml version='1.0' encoding='utf-8'?>
<ns0:Project xmlns:ns0="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<ns0:PropertyGroup>
<ns0:FileVersion>1.0.0.0</ns0:FileVersion>
<ns0:SchemaVersion>2.0</ns0:SchemaVersion>
<ns0:ProjectGuid>{2d33b7f3-0195-487c-b677-008e32b2b56b}</ns0:ProjectGuid>
Wie löse ich diese beiden Probleme?