【问题标题】:Get value of specific HTML tag(span tag) in C#在 C# 中获取特定 HTML 标记(跨度标记)的值
【发布时间】:2014-08-24 11:29:25
【问题描述】:

我正在为 Windows Phonw 8 开发 GOOGLE TRANSLATE 软件。我想在特定 class="result_box" 的跨度标签内获取“所有跨度标签的值” 在 C# 中。

<html>
.
.
<span id="result_box" class="short_text" lang="pt">
        <span class="hps">
            Olá
        </span>
        <span class="">
            .
        </span>
        <span class="hps">
            oi
        </span>
    </span>
.
.
</html>

我试过了,但它不起作用

html = e.Result;
var r = new Regex(@"(?i)<span[^>]*?>\s*", RegexOptions.IgnoreCase);
string capture = r.Match(html).Groups[1].Value;
MessageBox.Show(capture);

建议我使用正则表达式。如果可能的话,请给我返回文本的完整功能。

【问题讨论】:

标签: c# regex


【解决方案1】:

这个呢?

        Regex r = new Regex(@"<span[^>].*?>([^<]*)<\/span>", RegexOptions.IgnoreCase);

        foreach (Match matchedSpan in r.Matches(html))
        {
            string capture = matchedSpan.Groups[1].Value;
            MessageBox.Show(capture);
        }

【讨论】:

  • 正如 cmets 中所解释的,使用正则表达式处理 HTML 是一个非常糟糕的主意。
【解决方案2】:

好的,因为@mason 不喜欢前面的答案,这里有另一种方法:

        XmlDocument htmlXML=new XmlDocument();
        htmlXML.LoadXml(html);
        foreach (XmlNode spanElement in htmlXML.SelectNodes("//span[@class='short_text']/span") ) {
            MessageBox.Show(spanElement.InnerText);

        }

记得添加

using System.Xml;

【讨论】:

  • -1 不,HTML 文档不是 XML 文档,除非它是 XHTML。但即便如此,也不能保证标记会合规。有专门的库 (HTMLAgilityPack) 用于解析容错的 HTML。
  • 所有必要的帮助都在 cmets 中。
猜你喜欢
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
相关资源
最近更新 更多