gpt4 book ai didi

c# - 在 C# 上解析 Delphi 项目文件

转载 作者:数据小太阳 更新时间:2023-10-29 02:59:41 25 4
gpt4 key购买 nike

这似乎是一个奇怪的问题,但我对此有自己的理由!我正在尝试解析 Delphi 2009 项目文件 (.dproj),它是项目的 XML 表示形式。我可以将文档加载到 XmlDocument 中,但是当我尝试获取项目中使用的单位时,SelectNodes 给我一个空列表。

项目示例如下:

<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。

所以,如果你能解决这个问题,请提前致谢。

标记

最佳答案

引用 the documentation :

Remarks

If the XPath expression requires namespace resolution, you must use the SelectNodes overload which takes an XmlNamespaceManager as its argument. The XmlNamespaceManager is used to resolve namespaces.

Note If the XPath expression does not include a prefix, it is assumed that the namespace URI is the empty namespace. If your XML includes a default namespace, you must still use the XmlNamespaceManager and add a prefix and namespace URI to it; otherwise, you will not get any nodes selected.

您需要 two-argument version of SelectNodes .另外请注意,您选择的节点没有内容,因此 InnerXML 属性将为空。一旦你得到一个非空列表,你的代码仍然会打印一个空行列表。

关于c# - 在 C# 上解析 Delphi 项目文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1855895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com