我需要从我的xml中读取一个特定的节点,但是当结果不存在时,我会收到错误(如附件),我使用的是asp vb.net。如何运行检查以查看具有指定标识的rep节点是否存在?请参阅下面的代码。任何有关此问题的帮助都会很棒
XML
<repbio>
<rep id="1021">
<name>Tom Adams</name>
<area>England</area>
<invested>2004</invested>
<since>2012</since>
</rep>
</repbio>
VB.NET
Dim doc As New XmlDocument()
doc.Load(Server.MapPath("~/Files/RepBio.xml"))
Dim n As XmlNode = doc.SelectSingleNode("/repbio/rep[@ID='" & RepID & "']")
Response.Write(n("area").InnerText)
RepAreaXml.Text = n("area").InnerText
答案 0 :(得分:2)
从MSDN关于XmlNode.SelectSingleNode()
(强调我的):
返回值
键入:System.Xml.XmlNode
第一个与XPath查询匹配的XmlNode,如果找不到匹配的节点,则 Nothing 。
因此,您应该能够检查返回值是否不是Nothing
:
Dim n As XmlNode = doc.SelectSingleNode("/repbio/rep[@ID='" & RepID & "']/area")
If n IsNot Nothing Then
Response.Write(n("area").InnerText)
RepAreaXml.Text = n("area").InnerText
End If
附注:元素和属性名称区分大小写。如果XML中为@id
,则应在xpath中使用id="1021"
。
答案 1 :(得分:0)
您可以尝试以下方法:
Dim doc As New XmlDocument()
doc.Load(Server.MapPath("~/Files/RepBio.xml"))
Dim n As XmlNode = doc.SelectSingleNode("/repbio/rep[@ID='" & RepID & "']")
try
Response.Write(n("area").InnerText)
RepAreaXml.Text = n("area").InnerText
Catch ex As Exception
Response.Write("Not Found")
RepAreaXml.Text = String.Empty
End Try