Используя метод XElement.Elements, могу ли я найти элементы с подстановочным пространством имен, но с тем же именем? - PullRequest
7 голосов
/ 22 апреля 2010

Попытка сделать простой анализ XML-документа. Какой самый простой способ вытащить две группы свойств ниже?

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     1
  </PropertyGroup>
  <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     2
  </PropertyGroup>
</Project>

Я пытался использовать XElement.Elements (XName), но для этого мне нужно добавить префикс PropertyGroup к xmlns. Проблема в том, что меня не волнует пространство имен, и если оно изменится в будущем, я все равно хотел бы получить все PropertyGroups.

 var xml = XElement.Load(fileNameWithPath);
 var nameSpace = xml.GetDefaultNamespace();

 var propertyGroups= xml.Elements(nameSpace + "PropertyGroup");

Можете ли вы улучшить этот код так, чтобы мне не нужно было добавлять имя nameSpace? Я знаю, что могу по существу просто переопределить метод Elements, но я надеялся, что был какой-то способ передать пространство имен с подстановочными знаками?

Спасибо

Gavin

1 Ответ

10 голосов
/ 22 апреля 2010

Это у вас работает?

xml.Elements().Where(e => e.Name.LocalName == "PropertyGroup")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...