【问题标题】:HtmlAgilityPack doesn't return text inside a divHtmlAgilityPack 不返回 div 内的文本
【发布时间】:2012-11-22 20:45:09
【问题描述】:

这里是示例 html 页面,

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html version="-//W3C//DTD XHTML 1.1//EN" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Test Page</title>
</head>
<body>
<div id="topContainer">
    <div id="header">
        <span>This is a Test message</span>
        <span id="slogan">A sample slogan <br /> with 2 lines.</span>
    </div>
    <div id="news">
        This is a test news
    </div>
</div>
</body>
</html>

这是我的 C# 代码,

    public MainPage()
    {
        InitializeComponent();
        HtmlWeb.LoadAsync("URL", DownLoadCompleted);

    }

    void DownLoadCompleted(object sender, HtmlDocumentLoadCompleted e)
    {
        if(e.Error == null)
        {
            HtmlDocument doc = e.Document;

            if (doc != null)
            {
                var newsdiv = (from divnode in doc.DocumentNode.Descendants("div")
                               where divnode.Attributes["id"].Value == "header"
                               select divnode).FirstOrDefault();

                var txtT = HttpUtility.HtmlDecode(newsdiv.InnerText);
                txtDisplay.Text = txtT;

            }
        }
    }

当我尝试检索 header div 的 innerText 时,它可以工作。但是,当我尝试使用相同的代码来检索 topContainer div 的内部文本时,它不会返回任何内容。它也不会引发错误。而且它根本不适用于&lt;span&gt; 元素。

可能是什么原因?

谢谢

【问题讨论】:

  • 考虑添加显示问题的示例 HTML 元素。
  • 抱歉信息较少。我刚刚添加了一个 HTML 代码 sn-p。和更多信息。谢谢。

标签: c# html-agility-pack


【解决方案1】:

似乎您正在尝试仅选择 ID 为 IDOFTHEDIV 的 div;因此不会选择具有其他 ID(或没有 ID)的其他 DIV

【讨论】:

  • 当我将ID更改为另一个div的ID时,有时它不起作用。
猜你喜欢
  • 2023-03-28
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-04
  • 2014-05-30
  • 2017-10-20
  • 1970-01-01
  • 2014-01-22
相关资源
最近更新 更多