C# 获取第二个span标记的内容

C# 获取第二个span标记的内容,c#,html-agility-pack,C#,Html Agility Pack,我正在尝试html敏捷包,但很难找到正确的方法。 例如: 我想获取第二个span标记的内容: htmlDoc.DocumentNode.SelectSingleNode("//div[@style='color:#000000; padding: 10px;']/table/tr[1]/td[1]/span[2]").InnerText; 下面是我想使用html AGILITY PACK解析的html文件: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML

我正在尝试html敏捷包,但很难找到正确的方法。 例如: 我想获取第二个span标记的内容:

htmlDoc.DocumentNode.SelectSingleNode("//div[@style='color:#000000; padding: 10px;']/table/tr[1]/td[1]/span[2]").InnerText;
下面是我想使用html AGILITY PACK解析的html文件:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body onload="oload()" onunload="Unload()">

<div id="content">
<table width="100%">
<tr>
    <td width="48%" valign="top">
<fieldset style="border:1px solid #ccc;color:#ccc;margin:0;padding:0;">
<legend style="color:#ccc;margin:0 0 0 10px;padding:0 3px;">Profile Information</legend>
<div style="color:#000000; padding: 10px;">
<br />
Name Surname:<br />
<span style="font-size:18px;">John Doe</span>
<br /><br /><br />
Address:<br />
<span style="font-size:18px;">706 test<br>NY 14013</span>
<br /><br /><br />
</div>
</fieldset>
<br />
</td>
    <td width="52%" align="right" valign="top">
</td>
</tr>
</table>
    </div>
</body>
</html>

配置文件信息

姓名:
无名氏


地址:
706试验
NY 14013




根据发布的HTML代码片段,所有
span
元素,包括目标
span[2]
都直接位于
div
中,因此正确的XPath应该是:

//div[@style='color:#000000; padding: 10px;']/span[2]
在线演示链接:

输出:

706 testNY 14013

根据发布的HTML代码片段,所有
span
元素(包括目标
span[2]
)都直接位于
div
中,因此正确的XPath应该是:

//div[@style='color:#000000; padding: 10px;']/span[2]
在线演示链接:

输出:

706 testNY 14013
试试这个:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HtmlAgilityPack;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            String html = @"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">
<html xmlns=""http://www.w3.org/1999/xhtml"">
<head>
</head>
<body onload=""oload()"" onunload=""Unload()"">

<div id=""content"">
<table width=""100%"">
<tr>
    <td width=""48%"" valign=""top"">
<fieldset style=""border:1px solid #ccc;color:#ccc;margin:0;padding:0;"">
<legend style=""color:#ccc;margin:0 0 0 10px;padding:0 3px;"">Profile Information</legend>
<div style=""color:#000000; padding: 10px;"">
<br />
Name Surname:<br />
<span style=""font-size:18px;"">John Doe</span>
<br /><br /><br />
Address:<br />
<span style=""font-size:18px;"">706 test<br>NY 14013</span>
<br /><br /><br />
</div>
</fieldset>
<br />
</td>
    <td width=""52%"" align=""right"" valign=""top"">
</td>
</tr>
</table>
    </div>
</body>
</html>";

            var doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(html);
            var spans = doc.DocumentNode.SelectNodes("//span");
            Console.WriteLine(spans[1].InnerText);
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用HtmlAgilityPack;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串html=@”
配置文件信息

姓名:
无名氏


地址:
706试验
NY 14013



"; var doc=new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(html); var span=doc.DocumentNode.SelectNodes(“//span”); Console.WriteLine(span[1].InnerText); } } }
基本上,
doc.DocumentNode.SelectNodes(“//span”)
将给出所有
span
节点,并使用索引显示第二个内部文本

尝试以下操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HtmlAgilityPack;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            String html = @"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">
<html xmlns=""http://www.w3.org/1999/xhtml"">
<head>
</head>
<body onload=""oload()"" onunload=""Unload()"">

<div id=""content"">
<table width=""100%"">
<tr>
    <td width=""48%"" valign=""top"">
<fieldset style=""border:1px solid #ccc;color:#ccc;margin:0;padding:0;"">
<legend style=""color:#ccc;margin:0 0 0 10px;padding:0 3px;"">Profile Information</legend>
<div style=""color:#000000; padding: 10px;"">
<br />
Name Surname:<br />
<span style=""font-size:18px;"">John Doe</span>
<br /><br /><br />
Address:<br />
<span style=""font-size:18px;"">706 test<br>NY 14013</span>
<br /><br /><br />
</div>
</fieldset>
<br />
</td>
    <td width=""52%"" align=""right"" valign=""top"">
</td>
</tr>
</table>
    </div>
</body>
</html>";

            var doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(html);
            var spans = doc.DocumentNode.SelectNodes("//span");
            Console.WriteLine(spans[1].InnerText);
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用HtmlAgilityPack;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串html=@”
配置文件信息

姓名:
无名氏


地址:
706试验
NY 14013



"; var doc=new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(html); var span=doc.DocumentNode.SelectNodes(“//span”); Console.WriteLine(span[1].InnerText); } } }
基本上,
doc.DocumentNode.SelectNodes(“//span”)将给出所有
span
节点,并使用索引显示第二个内部文本