2017-07-12 5 views
0

webserviceにいくつかのパラメータを渡して、XmlDoc.SelectSingleNode("//Parameter/LastName").Valueなどを使用してXML文書から解析します。問題は、ノードに値がない場合です参照例外。私はまだこれをstring.empty paramとしてWebサービスに渡す必要があります。私はこの例外を処理する必要があることを理解していますが、私はそれを1行で行う方法があります。例えばSelectSingleNode.valueが見つからない場合にstring.emptyを割り当てます

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> 

Webサービスコール:

response = client.ExecLocalSearch(XmlDoc.SelectSingleNode("//Parameter/LastName").Value, "//Parameter/info").Value); 

答えて

0

あなたは非常に近いです! SelectSingleNode()コールは、ノードが見つからない場合はnullを返します。したがって、.Valueを呼び出すと、NullReferenceExceptionが送出されます。ただし、"safe navigation operator"?.)を使用して、nullを転送して、ヌル併合演算子(??)にnullが表示され、代わりに空の文字列が返されるようにすることができます。だからあなたの最初の行は次のようになります。ノードが見つからない場合

payloadXmlDoc.SelectSingleNode("//Parameter/LastName")?.Value ?? ""; 

だから、代わりに.Valueを呼び出すのでは、nullは、このように??nullを見ると、空の文字列を返しますが、代わりに使用されます。

+0

awesome :-)ありがとう。今、安全なナビゲーションオペレータのファンです。 – user7822440

関連する問題