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?
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
if ((string)level1.Attribute("customer_code") != null)
{
newBox.customer_code = (string)level1.Attribute("customer_code").Value;
}
The code above should take care of checking if the attribute exists.
Without the if statement you will get an object not set to an instance error.
精彩评论