检查XML节点是否具有Linq C#的属性?

Hen*_*ric 24 c# xml linq

如何查看节点是否确实具有某个属性?我有一个包含几个节点的XML文件,如下所示:

<Field From="OldString" To="NewString" /> 
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.问题是这个结构即将改为某些节点如下所示:

<Field From="OldString" To="NewString" PrefixValue="OptionalAttribute" />
Run Code Online (Sandbox Code Playgroud)

现在,当PrefixValue存在时,我应该将该属性中的值添加到字符串中,这并不是很困难,但是当我尝试查看PrefixValue属性是否完全存在时,我遇到了一些问题节点.在不存在PrefixValue的情况下,节点中根本不存在属性PrefixValue.我如何检查该属性是否与Linq表达式一起存在?

Jon*_*eet 53

嗯,这取决于你想做什么.如果要在投影中使用它,可以使用:

(string) element.Attribute("PrefixValue")
Run Code Online (Sandbox Code Playgroud)

如果缺少属性,那将返回null,这很有用.

如果你想在where子句中使用它,请使用如下内容:

where element.Attribute("PrefixValue") != null
Run Code Online (Sandbox Code Playgroud)


小智 5

if ((string)level1.Attribute("customer_code") != null)
{
   newBox.customer_code = (string)level1.Attribute("customer_code").Value;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码应该负责检查该属性是否存在。

如果没有 if 语句,您将得到一个对象未​​设置为实例的错误。