繁体   English   中英

在C#中获取div元素的内容

[英]get div element contents in C#

我有一个格式适当的HTML文档。 它不是XHTML,所以不是有效的XML。 给定开始标签的偏移量,考虑到标签中可以包含多个嵌套标签,我需要获取该标签的内容。

用最少的C#代码而不使用非标准库来解决此问题的最简单方法是什么?

您可以使用以下功能剥离HTML内容

public static string StripHTMLTag(string strHTML)
{
        return Regex.Replace(strHTML, "<(.|\n)*?>", "");
}

传递您外部标签的内容,这将删除所有html标签并仅提供内容。

希望这可以帮助

伊姆兰

我最终编写了以下函数。 看来是为了我的目的完成了工作。

我知道这有点脏,但是大多数网页的HTML代码也很脏。

如果有人可以指出主要缺陷,请这样做:

    private static readonly Regex rxDivTag = new Regex(
        @"<(?<close>/)?div(\s[^>]*?)?(?<selfClose>/)?>",
        RegexOptions.Compiled | RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase | RegexOptions.Singleline);
    private const string RXCAP_DIVTAG_CLOSE = "close";
    private const string RXCAP_DIVTAG_SELFCLOSE = "selfClose";

    private static List<string> GetProductDivs(string pageText, int start)
    {
        bool success = true;
        int curr = start + 1;
        for (Match matchNextTag = rxDivTag.Match(pageText, curr) ; depth > 0 ; matchNextTag = rxDivTag.Match(pageText, curr))
        {
            if (matchNextTag == Match.Empty)
            {
                success = false;
                break;
            }

            if (matchNextTag.Groups[RXCAP_DIVTAG_CLOSE].Success)
            {
                if (matchNextTag.Groups[RXCAP_DIVTAG_SELFCLOSE].Success)
                {
                    success = false;
                    break;
                }

                --depth;
            }
            else if (!matchNextTag.Groups[RXCAP_DIVTAG_SELFCLOSE].Success)
            {
                ++depth;
            }

            curr = matchNextTag.Index + matchNextTag.Length;
        }

        if (success)
        {
            return pageText.Substring(start, curr - start);
        }
        else
        {
            return null;
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM