我正在尝试从一个类似于这样的csproj文件中提取一个节点,但是无法成功——可能是因为命名空间声明的原因。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<PropertyGroup>
<RegisterForComInterop>true</RegisterForComInterop>
这个会彻底失败:
XDocument cpo = XDocument.Load(file);
XmlNamespaceManager nsm = new XmlNamespaceManager(new NameTable());
nsm.AddNamespace("x", "http://schemas.microsoft.com/developer/msbuild/200");
IEnumerable<XElement> list3 = cpo.XPathSelectElements("//x:RegisterForComInterop[.='true']", nsm);
有没有人有任何想法?
谢谢。
.Where(x => bool.Parse(x.Value))
替换最后一行,因为我们百分之百期望一个布尔字符串(否则我们期望抛出异常..)。 - Shimmy Weitzhandlerbool
,它知道XML。我会修改一下。 - Jon Skeet