And*_*mar 10 python xml elementtree
我正在编写一个Python脚本来更新Visual Studio项目文件.它们看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
...
Run Code Online (Sandbox Code Playgroud)
以下代码读取然后写入文件:
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")
Run Code Online (Sandbox Code Playgroud)
Python在最后一行抛出错误,说:
ValueError: cannot use non-qualified names with default_namespace option
Run Code Online (Sandbox Code Playgroud)
这是令人惊讶的,因为我只是在阅读和写作,中间没有编辑.Visual Studio拒绝加载没有默认命名空间的XML文件,因此省略它不是可选的.
为什么会出现此错误?建议或替代方案欢迎.
Wom*_*tPM 31
解决方案是在解析项目文件之前定义默认命名空间.
ET.register_namespace('',"http://schemas.microsoft.com/developer/msbuild/2003")
Run Code Online (Sandbox Code Playgroud)
然后把你的文件写出来
tree.write(projectFile,
xml_declaration = True,
encoding = 'utf-8',
method = 'xml')
Run Code Online (Sandbox Code Playgroud)
您已成功完成文件的往返.并避免在任何地方创建ns0标记.
| 归档时间: |
|
| 查看次数: |
9149 次 |
| 最近记录: |