2012-08-24 42 views
0

内容在网页上,我有如何获得通过的XPath

<meta name="description" content="Learn about 94.100.179.159" /> 

如何通过的Xpath得到完全文本“了解94.100.179.159”或HtmlAgilityPack

我试过

HtmlWeb hwObject = new HtmlWeb(); 
      HtmlDocument htmldocObject = hwObject.Load("http://whois.domaintools.com/94.100.179.159"); 
      foreach (HtmlNode link in htmldocObject.DocumentNode.SelectNodes("//meta")) 
      { 
       string s = link.InnerText; 
       Console.WriteLine(s); 

      } 
      Console.ReadLine(); 

但这不给我,我想要如何解决?

+0

link.Attributes [ “内容”] –

+0

这给了我HtmlAgilityPack.tmlAttribute ... – fen1ksss

回答

1

Meta标签没有任何内部文本,他们的属性。

试试这个:

HtmlWeb hwObject = new HtmlWeb(); 
HtmlDocument htmldocObject = hwObject.Load("http://whois.domaintools.com/94.100.179.159"); 
foreach (HtmlNode link in htmldocObject.DocumentNode.SelectNodes("//meta")) 
{ 
    Console.WriteLine("-META-"); 
    var attribDump=link.Attributes.Select(a=>a.Name+" : "+a.Value); 
    foreach (var x in attribDump) 
    { 
     Console.WriteLine(x); 
    } 
} 
+0

工程很好,非常感谢! – fen1ksss

+0

你可以评论一下吗?什么是“一”?以及为什么有必要使用第二个foreach循环? – fen1ksss

+0

@ fen1ksss spender在将此投影转储到控制台之前,已使用linq'Select'扩展方法为元元素上的每个属性投影新字符串“Name:Value”。 http://msdn.microsoft.com/en-us/library/bb548891(v=vs.100).aspx – StuartLC

3
//meta[@name = 'description']/@content 

是该属性的XPATH指定

string s = link.Value; 

应该返回属性的内容。

+0

有像link.Value – fen1ksss

+0

尝试link.CreateNavigator()没有这样的参数值。 –

+0

nullreferenceexception was unledled – fen1ksss

1

选择节点如下

SelectNodes("//*[local-name()='meta')]")) 

然后,对于每个HtmlNode

Console.WriteLine(link.Attributes["content"].Value); 
+0

这不起作用 – fen1ksss