我正在运行一段代码,在其中读取 XML 文件并使用 vb.net 将其保存在局部变量中。
遗憾的是,并非所有 XML 的结构都相同,因此我遇到了一个问题:如果我尝试映射的其中一个字段丢失,它将停止运行代码并提示错误。
我希望,如果某个字段不是基金,请将其保留为空并运行代码直到结束。
我尝试使用 try 和 catch,但没有成功。
Var1 = xmlNode.SelectSingleNode("Test1").InnerText
Var2 = xmlNode.SelectSingleNode("Test2").Value
Var3 = xmlNode.SelectSingleNode("Test3").InnerText
现在,如果其中一个 xml 中缺少 Var2,它将停止运行代码,并且即使存在 Var3,也不会获取该 Var3。
谢谢
最佳答案
如果您使用的是 Visual Studio 2015,则可以使用 null 传播运算符 ?
Var1 = xmlNode?.SelectSingleNode("Test1")?.InnerText
Var2 = xmlNode?.SelectSingleNode("Test2")?.Value
Var3 = xmlNode?.SelectSingleNode("Test3")?.InnerText
如果你使用的是较旧的东西,那么你将不得不做这个长手:
If xmlNode IsNot Nothing Then
Dim node = xmlNode.SelectSingleNode("Test1")
If node IsNot Nothing then Var1 = node.InnerText
node = xmlNode.SelectSingleNode("Test2")
If node IsNot Nothing then Var1 = node.Value
'etc.
End If
请注意,您可以使用 Try...Catch
来完成此操作,但这将是丑陋的代码:
Try
Var1 = xmlNode.SelectSingleNode("Test1").InnerText
Catch ex As Exception
'ignore
End Try
Try
Var2 = xmlNode.SelectSingleNode("Test2").Value
Catch ex As Exception
'ignore
End Try
Try
Var3 = xmlNode.SelectSingleNode("Test3").InnerText
Catch ex As Exception
'ignore
End Try
因此,如果您有很多这样的内容,最好将其包装在一个函数中:
Public Shared Function GetNodeInnerText(node as XmlNode, nodeName As String) As String
If node Is Nothing Then Return ""
Dim singleNode = node.SelectSingleValue(nodeName)
If singleNode Is Nothing Then Return ""
Return singleNode.InnerText
End Function
关于asp.net - 即使发现 nullException,仍继续运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37673962/