我在xsd架构中定义了nillable十进制元素,如下所示:
<xs:element name="myDecimalValue" nillable="true" type="xs:decimal" />
这是一个杰出的领域,我想检查它是否是表达形状的nill。我可以像这样使用xpath()函数:
xpath("string(//*[local-name()='myDecimalValue']/@*[local-name()='nil'])") == "true"
但对于简单的空值检查,它看起来有点复杂。所以我想知道我是否遗漏了一些东西并且有更好的方法来做到这一点?
答案 0 :(得分:0)
您可以尝试使用决定形状而不是xpath
你决定的形状会像这样 只要询问myDecimalValue是否为空
msgName.myDecimalValue != null here
比你可以继续你的逻辑
如果使用尊贵字段,则使用它对其他开发者来说更具可读性
修改强>
你能试试吗? varString = System.Convert.ToString(msgName.myDecimalValue);然后询问varString是否为null
我尝试了它并且编译得很好
希望它有所帮助 :)答案 1 :(得分:0)
我怀疑这是无法实现的。
具体来说,来自http://support.microsoft.com/kb/942250
消息中不允许具有空值的属性 上下文。因此,如果将空值写入消息中 上下文,此值将被删除。
(这是关于推广和尊重属性的文档部分,所以我假设它适用于两者)。
所以看起来您的xpath解决方案可能是必需的解决方案,因为尊重的属性无论如何都不会出现在消息上下文中。