Я пытаюсь выбрать все узлы, используя root.SelectNodes()
с XPath
. Для справки см. документацию msdn.
В документе следующем пояснении вы можете также ищите узлы, содержащие атрибуты (поправьте меня, если это действительно неправильное понимание).
Поэтому я использовал следующую строку кода:
XmlNodeList nodes = projectDoc.DocumentElement.SelectNodes("descendant::Compile[attribute::Include]");
И я пытаюсь прочитать следующие данные:
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<ItemGroup>
<Compile Include="ArrayExtensions.cs" />
<Compile Include="ArrayIterator.cs" />
<Compile Include="AutoInitializeAttribute.cs" />
<Compile Include="AutoInitializePriority.cs" />
<Compile Include="AutoRegisterAttribute.cs" />
<Compile Include="FormattableExtensions.cs" />
<Compile Include="Mathematics\PrimeNumbers.cs" />
</ItemGroup>
</Project>
Как показано в приведенном выше примере кода, я хочу получить все узлы XmlNodes, содержащие атрибут Include. Однако, когда я выполняю свой код, nodes
содержит 0 элементов.
Что я здесь делаю неправильно?
Compile
в пространстве именhttp://schemas.microsoft.com/developer/msbuild/2003
. Есть ли причина, по которой вам нужно сделать это в XPath? С LINQ to XML это было бы тривиально. - person Jon Skeet   schedule 11.06.2014