i'm trying to pull out a node from a csproj file that looks like this, but can't get it to work - presumably because of the namespace declaration.
<?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>
This fails miserably:
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);
Anyone any ideas please?
Thanks.
Do you really want to use XPath for this? It's really easy to use namespaces within LINQ to XML:
or if you're absolutely convinced that every RegisterForComInterop will have an appropriate Boolean value you can use the explicit
XElement
tobool
conversion:Personally I would usually go this route rather than XPath especially if namespaces are involved.