如何查看节点是否确实具有某个属性?我有一个包含几个节点的XML文件:
<Field From="OldString" To="NewString" />
到目前为止一切顺利。问题是这个结构即将改为某些节点看起来像这样:
<Field From="OldString" To="NewString" PrefixValue="OptionalAttribute" />
现在,当PrefixValue存在时,我应该将该属性中的值添加到字符串中,这并不是很困难,但是当我尝试查看是否存在PrefixValue属性时,我遇到了一些问题全部用于节点。在不存在PrefixValue的情况下,节点中根本不存在属性PrefixValue。我如何检查该属性是否与Linq表达式一起存在?
答案 0 :(得分:53)
嗯,这取决于你想做什么。如果要在投影中使用它,可以使用:
(string) element.Attribute("PrefixValue")
如果缺少该属性,那将返回null,这很有用。
如果你想在where子句中使用它,请使用类似:
where element.Attribute("PrefixValue") != null
答案 1 :(得分:4)
if ((string)level1.Attribute("customer_code") != null)
{
newBox.customer_code = (string)level1.Attribute("customer_code").Value;
}
上面的代码应该检查属性是否存在。
如果没有if语句,您将得到一个未设置为实例错误的对象。