2012-08-06 71 views
1

我想檢查節點「密鑰」是否存在於XML中,如果不是,我不得不分配「無節點」。 下面是我正在使用的代碼,但它會引發錯誤如何檢查XML節點是否存在

「對象引用未設置爲對象的實例」。在我檢查節點值Nothing的行中。 如何檢查XML節點是否存在?

  Dim doc As New XmlDocument() 
      doc.Load(strPath) 
      'Create an XmlNamespaceManager for resolving namespaces. 
      Dim nsmgr As New XmlNamespaceManager(doc.NameTable) 
      nsmgr.AddNamespace("vvp", "http://schemas.abc.efg.IJ/zyx/") 

      'Fetch nodes 
      Dim MyRootNode As XmlNode = doc.SelectSingleNode("//vvp:provider", nsmgr) 
      If (MyRootNode("Key").InnerXml <> Nothing) Then 
       OrgCode = "No Node" 
      End If 
+0

您是否必須使用XmlDocument? LINQ to XML更簡單。 – 2012-08-06 10:25:42

+0

@JonSkeet由於其他一些原因,我必須使用XMLDocument。我怎樣才能做到這一點 ? – Anuya 2012-08-06 10:31:41

+0

恐怕我現在沒有時間去查看舊的XmlDocument API - 希望別人能回答。 – 2012-08-06 10:35:43

回答

1

你可以這樣做

Dim MyRootNode As XmlNode = doc.SelectSingleNode("//vvp:provider", nsmgr) 
Dim keyNodelst As XmlNodeList=MyRootNode.SelectNodes(".//Key") 
      If (!keyNodelst.Count>0) Then 
       OrgCode = "No Node" 
      End If 

Dim MyRootNode As XmlNode = doc.SelectSingleNode("//vvp:provider", nsmgr) 
    Dim keyNode As XmlNode=MyRootNode.SelectSingleNode(".//Key") 
       If (keyNode==null) Then 
        OrgCode = "No Node" 
       End If 

XPath的參考http://msdn.microsoft.com/en-us/library/ms256086.aspx

+1

請從鏈接到W3Schools的不要(見http://w3fools.com爲原因)。你可能已經鏈接到一個包含正確信息的頁面,但該網站有很多不正確和誤導性的信息 - 並以任何方式鏈接到w3schools使其信譽**它不值得**。 (如果您使用Google搜索,並且擁有Google帳戶,則可以[輕鬆阻止搜索結果](來自w3schools)(http://support.google.com/websearch/bin/answer.py?hl=zh_CN&answer=1210386) – freefaller 2012-08-06 11:07:27

+0

@freefaller是的,我同意,並記住這一點。謝謝。 – 2012-08-06 11:11:00

1

據推測,如果有一世沒有密鑰然後MyRootNode("Key")是沒有什麼,這就是爲什麼你得到空引用異常?

我還以爲這些簡單的修改應該工作:

If (MyRootNode("Key") is Nothing) Then 
    OrgCode = "No Node" 
End If 

(即我們去掉了試圖讓內XML)。

相關問題