VB.NET检查存在ID的XML节点

时间:2015-05-27 11:23:11

标签: asp.net xml vb.net

我需要从我的xml中读取一个特定的节点,但是当结果不存在时,我会收到错误(如附件),我使用的是asp vb.net。如何运行检查以查看具有指定标识的rep节点是否存在?请参阅下面的代码。任何有关此问题的帮助都会很棒

enter image description here

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

2 个答案:

答案 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