C# 选择SingleNode.value未找到时分配string.empty
我将一些参数传递给Web服务,并使用C# 选择SingleNode.value未找到时分配string.empty,c#,.net,xpath,C#,.net,Xpath,我将一些参数传递给Web服务,并使用XmlDoc.SelectSingleNode(“//Parameter/LastName”).Value等从XML文档中解析它。问题是如果节点没有值,我会得到一个对象引用异常。我仍然需要将其作为string.empty参数传递给我的web服务。我知道我需要处理这个异常,但有没有一种方法可以在一行中完成。比如说 string/variable lname = payloadXmlDoc.SelectSingleNode("//Parameter/LastNam
XmlDoc.SelectSingleNode(“//Parameter/LastName”).Value
等从XML文档中解析它。问题是如果节点没有值,我会得到一个对象引用异常。我仍然需要将其作为string.empty参数传递给我的web服务。我知道我需要处理这个异常,但有没有一种方法可以在一行中完成。比如说
string/variable lname = payloadXmlDoc.SelectSingleNode("//Parameter/LastName").Value ?? "";
xslt模板
<xsl:element name="ssn">
<xsl:choose>
<xsl:when test="count(//Transaction/Parameter[@Name='LastName'])>0">
<xsl:value-of select="//Transaction/Parameter[@Name='LastName']/@Value"/>
</xsl:when>
<xsl:otherwise>
<xsl:text></xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
你很接近!如果找不到节点,
SelectSingleNode()
调用将返回null
,因此对其调用.Value
将抛出NullReferenceException
。但是,您可以使用(?。
)转发null
,以便null合并运算符(?
)将看到null
,并返回空字符串。因此,您的第一行将如下所示:
payloadXmlDoc.SelectSingleNode("//Parameter/LastName")?.Value ?? "";
因此,如果找不到节点,则不调用.Value
,而是使用null
,因此??
将看到null
并返回空字符串。awesome:-)。谢谢我现在是安全导航操作员的粉丝。
payloadXmlDoc.SelectSingleNode("//Parameter/LastName")?.Value ?? "";