我需要解析的HTML内容是marquee元素中的文本,如下所示。我正在使用带有HTML Agility Pack的C#来解析它,但抛出了一个nullrefrence异常。
C#代码是
var ht1 = ht.DocumentNode.SelectSingleNode("html/body/table/tbody/tr/td[2]/div[2]/marquee/text()").InnerText;
HTML的一部分:
<html>
-<body ...
-<table id=..
-<tbody>
-<tr>
+<td.........
-<td
+<div ......
-<div style="width:100%;padding:0;margin:0;border
-style:solid;border-width:0;border-color:darkred;">
<marquee width="100%" height="20" bgcolor="" style="color:
darkorchid; font-size: 14" loop="3" behavior="scroll"
scrolldelay="90 scrollamount="5" align="middle" border="0">
your scrolling text - these are some samples - think of
possibilities</marquee>
<div>
答案 0 :(得分:0)
您是否查看了html文件的直接来源?如果您只查看Firebug / fox等浏览器中显示的html,则会显示其他tbody标记,这些标记实际上并不在文件中。
因此使用:
var ht1 = ht.DocumentNode.SelectSingleNode("html/body/table/tr/td[2]/div[2]/marquee/text()").InnerText;
您通常不想使用text(),因为节点的文本内容已经是其文本。而text()返回一组文本节点,而不是连接文本 因此使用:
var ht1 = ht.DocumentNode.SelectSingleNode("html/body/table/tr/td[2]/div[2]/marquee").InnerText
答案 1 :(得分:0)
该页面似乎没有格式良好的HTML。 这对我有用:
ht.DocumentNode.SelectSingleNode(@"html/head/table[1]/tbody/tr/td[1]/td/div[2]/marquee").InnerText;