tags:

views:

452

answers:

1

How can I check and see if a node actually has a certain attribute? I have an XML-file containing several nodes looking like this:

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

So far so good. The problem is that this structure is about to be changed to that some nodes will look like this:

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

Now, when the PrefixValue is present I am supposed to prepend the value in that attribute to a string, and that is not very difficult, but I have run into some problems when I try to see if the PrefixValue attribute is present at all for a node. In the instances where no PrefixValue is present, the attribute PrefixValue will not exist in the node at all. How would I go about checking to see if the attribute exists with a Linq-expression?

+2  A: 

Well, it depends what you want to do. If you want to use it in a projection, you can use:

(string) element.Attribute("PrefixValue")

That will return null if the attribute is missing, which is useful.

If you want it in a where clause, use something like:

where element.Attribute("PrefixValue") != null
Jon Skeet
Essentially, I just want a null value to be returned if the attribute is missing altogether as a first step. Thanks!
daft