2011-08-05 36 views
3

解析Visual Studio .csproj文件使用python进行进一步修改的最佳方法是什么?使用python解析VisualStudio .csproj文件的最佳方法

这是一些.csproj文件:

... 
<ItemGroup> 
    <Reference Include="SomeAssembly, Version=1.1.1.1"/>  
... 
</ItemGroup> 
... 

我想插入此:

<HintPath>path/to/SomeAassembly.dll</HintPath> 

<Reference/>节点。

+1

比什么好? – delnan

+0

比找到像“Reference”这样的字符串更好,并用正则表达式分割字符串的其他部分。然后,插入HintPath标签并关闭引用标签。 – Eugen

+0

更好地更改为最好 – Eugen

回答

0

VS项目文件是XML。 Python附带了许多XML解析库:http://docs.python.org/library/markup.html

xml.parsers.expatxml.minidom中的任一个都可以实现您所描述的内容。为了处理像VS项目文件这样的小型XML文档,在它们之间进行选择是一件有趣的事情。每个文档中的示例代码都应该帮助您做出决定。

一个优雅的选择,特别是如果你有很多这样的转换适用,将是use a filter object with the xml.sax API

+0

我用'minidom'。不幸的是,Visual Studio有一个非常具体的格式化程序,用于'.csproj'文件,我的Python脚本在很多方面修改了格式,这在SCM中产生了错误的差异。任何想法如何解决这个问题? – Helgi

+0

如果最小化差异对你来说非常重要,那么也许一个XML解析器不是可行的方法,最好把它当作一个字符串转换问题,即用正则表达式替换来攻击它。这将会更脆弱。 – slowdog

+0

这就是我以为我可能会在下一次我有类似的任务时使用。感谢分享!也许这个问题也会与Eugen有关。 – Helgi

相关问题