Подтвердить что ты не робот

Проверьте, есть ли атрибут XML- node с Linq С#?

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

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

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

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

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

4b9b3361

Ответ 1

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

(string) element.Attribute("PrefixValue")

Это вернет null, если атрибут отсутствует, что полезно.

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

where element.Attribute("PrefixValue") != null

Ответ 2

if ((string)level1.Attribute("customer_code") != null)
{
   newBox.customer_code = (string)level1.Attribute("customer_code").Value;
}

В приведенном выше коде следует позаботиться о том, существует ли атрибут.

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