开发者

Check if XML-node has attribute with Linq C#?

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜