2011-08-05 35 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

相關問題