2015-11-01 45 views
1

我正在使用HTMLAgility pack從HTML頁面獲取有關文章的信息。我能夠在文檔中找到任何我想要的內容,但出於某種原因,無論我做什麼,都無法找到PageMap對象。我創建了一個測試文檔來隔離PageMap,但仍然沒有運氣。HTMLAgility Pack找不到PageMap標記

這是測試HTML:

<html> 
    <head> 

     <PageMap> 
      <DataObject type="document"> 
       <Attribute name="article_title">Test Title</Attribute> 
       <Attribute name="article_publication_name">Test Publication Name</Attribute> 
       <Attribute name="article_author">Test Authro | The Test</Attribute> 
       <Attribute name="article_description">A test of test and test test test!</Attribute> 
       <Attribute name="image_src">http://www.google.com</Attribute> 
       <Attribute name="article_comments">0</Attribute> 
       <Attribute name="article_date_original">10/31/2015</Attribute> 
       <Attribute name="article_date_updated">10/31/2015</Attribute> 
      </DataObject> 
     </PageMap> 


    </head> 
    <body> 
     test 
    </body> 
</html> 

這是我使用的代碼:

string strPageHTML = File.ReadAllText(@"test.htm"); 

HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml(strPageHTML); 

HtmlNode htmnArticle = doc.DocumentNode.SelectSingleNode("//PageMap"); 
tbMessagePreview.Text = htmnArticle.InnerHtml; 

活或測試HTML兩種負載罰款,但htmnArticle節點總是空。任何建議,將不勝感激。

回答

1

使用//pagemap(HtmlAgilityPack標準化節點爲小寫 - HTML Agility Pack Parsing With Upper & Lower Case Tags?):

HtmlNode htmnArticle = doc.DocumentNode.SelectSingleNode("//pagemap"); 
tbMessagePreview.Text = htmnArticle.InnerHtml; 

旁註:看着doc.DocumentNode.InnerHtml有助於看到節點如何進行歸一化。

+0

TY,太簡單了。我希望我在搜索中偶然發現了另一個問題,會節省一大堆時間。 –