Проверить, есть ли у XML-узла атрибут с Linq C #? - PullRequest
24 голосов
/ 24 марта 2010

Как я могу проверить и посмотреть, есть ли у узла определенный атрибут? У меня есть XML-файл, содержащий несколько узлов, выглядящих так:

<Field From="OldString" To="NewString" /> 

Пока все хорошо. Проблема в том, что эта структура собирается измениться, чтобы некоторые узлы выглядели так:

<Field From="OldString" To="NewString" PrefixValue="OptionalAttribute" />

Теперь, когда PrefixValue присутствует, я должен добавить значение в этом атрибуте к строке, и это не очень сложно, но у меня возникли некоторые проблемы, когда я пытаюсь проверить, присутствует ли атрибут PrefixValue все для узла. В тех случаях, когда PrefixValue отсутствует, атрибут PrefixValue вообще не будет существовать в узле. Как мне проверить, существует ли атрибут с выражением Linq?

Ответы [ 2 ]

53 голосов
/ 24 марта 2010

Ну, это зависит от того, что вы хотите сделать. Если вы хотите использовать его в проекции, вы можете использовать:

(string) element.Attribute("PrefixValue")

Возвращает ноль, если атрибут отсутствует, что полезно.

Если вы хотите это в предложении where, используйте что-то вроде:

where element.Attribute("PrefixValue") != null
4 голосов
/ 04 мая 2011
if ((string)level1.Attribute("customer_code") != null)
{
   newBox.customer_code = (string)level1.Attribute("customer_code").Value;
}

Приведенный выше код должен позаботиться о проверке существования атрибута.

Без оператора if вы получите объект, для которого не установлена ​​ошибка экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...