2010-04-14 65 views
0

這裏是我的代碼:XML錯誤:對象引用不設置到對象的實例的SelectSingleNode之後

XmlDocument doc = new XmlDocument(); 
foreach (string c in colorList) 
{ 
    doc.Load(@"http://whoisxmlapi.com/whoisserver/WhoisService?domainName=" + c + @"&username=user&password=pass"); 
    textBox1.Text += doc.SelectSingleNode("WhoisRecord/registrant/email").InnerText + ","; 
} 

爲第二行代碼(TextBox1中...)正在產生這個錯誤 我在做什麼錯誤?

+0

**向我們展示一個示例XML **,以便我們可以看到可能發生的事情!你的XPath可能是錯誤的(沒有選擇任何內容),可能是因爲缺乏對XML命名空間的尊重 - 或者還有很多其他原因 - 但是沒有XML,我們無法僅僅從你的代碼中得出結論...... – 2010-04-14 20:33:00

回答

3

如何分割行以查看發生異常的位置?

// if node is null the problem is with SelectSingleNode 
XmlNode node = doc.SelectSingleNode("WhoisRecord/registrant/email"); 

// if text is null the problem is with the node 
string text = node.InnerText; 

// if textBox1 is null the problem is with textBox1 
textBox1.Text += text + ","; 
3

documentation for SelectSingleNode表示如果找不到匹配的節點,則返回null。您必須修復查詢或處理找不到匹配的失敗。

+0

它工作正常,如果我只是將URL粘貼到瀏覽器中 – 2010-04-14 19:33:57

+3

我敢打賭,你沒有將SelectSingleNode調用粘貼到瀏覽器中,因爲這是失敗的。 XPath中的大寫看起來可疑,你確定它是正確的? – 2010-04-14 19:35:16

+1

另外...你用什麼粘貼了「c」變量? XPath缺少'WhoisRecord'和'註冊者'之間的元素(registryData)。我還注意到,當你選擇一個'可用'的域時,註冊者元素將是空的,因此會導致提到的'空'引用異常。 – 2010-04-14 19:40:17

0

如果XPath查詢返回null,您將得到NullReferenceException的唯一原因是。在運行查詢之前檢查XML,看看問題是什麼。

+0

它工作正常,如果我只是將URL粘貼到瀏覽器中 – 2010-04-14 19:34:14

+1

@every_answer_gets_a_point - 在代碼中檢查它。 – ChaosPandion 2010-04-14 19:35:04

0

看來doc.SelectSingleNode("WhoisRecord/registrant/email")爲空。無法獲取null的屬性。

+0

它工作正常,如果我只是將URL粘貼到瀏覽器 – 2010-04-14 19:36:00

+1

您可以調試,分解代碼,爲每個中間值創建變量,檢查它們的值是否與您期望的值相符。 – AlexanderMP 2010-04-14 19:38:29

0

瀏覽器做各種其他聰明的東西,如跟隨重定向和處理會議。如何進入代碼並查看失敗的文檔的XmlDocument的OuterXml屬性?

相關問題