Piszę skrypt w języku Python, aby zaktualizować pliki projektów Visual Studio. Wyglądają tak:Nie można zapisać pliku XML z domyślną przestrzenią nazw
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
...
Poniższy kod odczytuje i zapisuje plik:
import xml.etree.ElementTree as ET
tree = ET.parse(projectFile)
root = tree.getroot()
tree.write(projectFile,
xml_declaration = True,
encoding = 'utf-8',
method = 'xml',
default_namespace = "http://schemas.microsoft.com/developer/msbuild/2003")
Python zgłasza błąd na ostatniej linii, mówiąc:
ValueError: cannot use non-qualified names with default_namespace option
Jest to zaskakujące ponieważ tylko czytam i piszę, bez edycji pomiędzy. Visual Studio odmawia załadowania plików XML bez domyślnej przestrzeni nazw, więc pominięcie jej nie jest opcjonalne.
Dlaczego ten błąd występuje? Sugestie lub alternatywy są mile widziane.
Wygląda na to, że jest to znany błąd. Zobacz http://bugs.python.org/issue17088 – WombatPM