這可能看起來像一個奇怪的問題,但我有我自己的理由!我試圖解析一個Delphi 2009項目文件(.dproj),它是項目的XML表示。我可以將文檔加載到XmlDocument中,但是當我嘗試訪問項目中使用的單元時,SelectNodes會給我一個空列表。在C上解析Delphi項目文件#
項目的下面是一個例子:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
...
<ItemGroup>
<DelphiCompile Include="Package.dpk">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="vcl.dcp"/>
<DCCReference Include="Unit1.pas"/>
<DCCReference Include="Unit2.pas"/>
<DCCReference Include="Unit3.pas"/>
<DCCReference Include="Unit4.pas"/>
<DCCReference Include="Unit5.pas"/>
...
</ItemGroup>
</Project>
代碼的下面是一個例子:
ProjectDocument.Load(FileName);
XmlNodeList nodeList;
XmlElement RootNode = ProjectDocument.DocumentElement;
string xmlns = RootNode.Attributes["xmlns"].Value;
// This gives an empty list
nodeList = RootNode.SelectNodes("/Project/ItemGroup/DCCReference");
foreach (XmlNode title in nodeList)
{
Console.WriteLine(title.InnerXml);
}
// This also gives an empty list
nodeList = RootNode.SelectNodes("/ItemGroup/DCCReference");
foreach (XmlNode title in nodeList)
{
Console.WriteLine(title.InnerXml);
}
真正的問題是,我在做什麼錯了,因爲我必須失去了一些東西。唯一奇怪的是,該文件不是.xml,它是一個.dproj。
所以,如果你能解決這個問題,請提前致謝。
馬克
好極了,這兩個答案的組合完成了。 謝謝 – Mmarquee 2009-12-06 18:21:03