2016-08-25 52 views
0
<html> 
<body> 
<div id="orders"> 
<div> 
    <div> 
    <div>InnerText</div> 


HtmlNode parentNode = doc.DocumentNode.SelectSingleNode("//*[@id=\"orders\"]"); 
HtmlNode childNode = parentNode.SelectSingleNode("/div/div/div"); 
string myStr = childNode.InnerText; // should be "InnerText", no? 

這似乎合乎邏輯,但我在myStr上拋出NullReferenceExceptions。這是我的xpath符號還是我誤解了層次結構?C#HtmlAgilityPack相對節點選擇。 Xpath是非常,非常淘氣

+0

我想你childNode的XPath是錯了.. – NuWin

回答

2

相對XPath不應該以/開頭。從/開始,XPath將被視爲相對於根文檔節點(換言之,絕對而不是相對於上下文元素)。由於HTML文檔的根元素不是div,/div預計會返回沒有匹配的元素。

您應該使用./代替:

HtmlNode childNode = parentNode.SelectSingleNode("./div/div/div"); 

或只是直接從divchild::軸是在沒有明確的軸提及的默認啓動:

HtmlNode childNode = parentNode.SelectSingleNode("div/div/div"); 
+0

完美的謝謝! – 2confused4u