简体   繁体   中英

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM