【问题标题】:How to check if an HTML element contains textual content如何检查 HTML 元素是否包含文本内容
【发布时间】:2016-03-31 11:19:38
【问题描述】:

在 C# winform 应用程序中,我尝试检查 HtmlElementinnerText 是否为空格。

 String.IsNullOrWhiteSpace(elem.InnerText)

elem.OuterHtml 是:

<div class="ad-container toplb">
 <span class="leader-board">
 <div id="div-gpt-ad-1409955032897-3">
 <script type="text/javascript">
  PbhAdUnit.cmd_push(function() {pbh_ad_units['div-gpt-ad-1409955032897-3'].display(); });
 </script>
 </div>
 </span>
</div

innerText的内容

  PbhAdUnit.cmd_push(function() {pbh_ad_units['div-gpt-ad-1409955032897-3'].display(); });  

我希望innerText 忽略脚本并在元素内没有可读文本(出现在页面上的文本)时返回空。无论如何我怎么能忽略这些元素?

【问题讨论】:

  • 什么是可读文本
  • @dotctor 出现在页面上的文本。
  • 你的elem指向哪个元素?
  • @dotctor 顶部的div元素,代码是它的outerhtml
  • 你试过 string.IsNullOrWhiteSpace 吗?

标签: c# winforms mshtml innertext


【解决方案1】:

您可以使用InnerText 属性查找元素的内部文本。它返回所有内部文本删除标记。

示例代码:

private void Form1_Load(object sender, EventArgs e)
{
    this.webBrowser1.Navigate(@"d:\sample.html");
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    var div = this.webBrowser1.Document.GetElementById("div1");
    MessageBox.Show(string.Format("'{0}'", div.InnerText), "InnerText");
    MessageBox.Show(string.Format("'{0}'", div.InnerHtml), "InnerHtml");
}

示例内容:

使用以下内容创建一个sample.html 文件。

<html>
<head><title>Title</title></head>
<body>
    <div id="div1"><script type="text/javascript">alert('Hi');</script><input type="text"/></div>
</body>
</html>

结果:

我将'' 放在内部文本和内部 html 周围:

【讨论】:

  • 谢谢,无论如何我现在没有这个问题,因为我使用这个问题的答案stackoverflow.com/questions/13441470/… 删除了脚本标签,但我希望你试试我原来的 html。
  • 我也试过用你原来的html,结果是一样的。但为了使答案更通用,对未来的读者更有用,我使用上述值作为答案。您可以简单地将您想要的内容放入此示例中并查看结果:)
  • 谢谢,我必须再次调试它。实际上,我的问题在于InnerText 本身。我会通知你的。
猜你喜欢
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2017-08-04
  • 2021-07-16
  • 2017-05-08
  • 1970-01-01
相关资源
最近更新 更多