-5

我有以下字符串"</script><div id='PO_1WTXxKUTU98xDU1'><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>"

我需要从 div 标签中获取属性值。我如何使用 C# 检索它。

4

4 回答 4

1

避免使用解析htmlregex

Regex不是解析HTML文件的好选择..

HTML 并不严格,其格式也不规则。

使用htmlagilityPack

您可以使用 htmlagilityPack 来执行此操作。

HtmlDocument doc = new HtmlDocument();
doc.Load(yourStream);
List<string> itemList = doc.DocumentNode.SelectNodes("//div[@id]")//selects all div having id attribute
.Select(x=>x.Attributes["id"].Value)//select the id attribute value
.ToList<string>();
//itemList will now contain all div's id attribute value
于 2012-11-01T16:59:36.040 回答
0

严格解决所提出的问题,解决它的无数方法之一是隔离div元素,将其解析为 anXElement然后以这种方式提取属性的值。

        string bobo = "</script><div id='PO_1WTXxKUTU98xDU1'><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>";
        string justDiv = bobo.Substring(bobo.IndexOf("<div"));
        XElement xelem = XElement.Parse(justDiv);
        var id = xelem.Attribute("id");
        var value = id.Value;

当然有很多方法可以解决这个问题,但是这个回答了邮件。

于 2012-11-01T17:14:00.087 回答
0

如果您是受虐狂,您可以使用这种老式的 VB3 风格:

        string input = @"</script><div id='PO_1WTXxKUTU98xDU1'><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>";
        string startString = "div id='";

        int startIndex = input.IndexOf(startString);

        if (startIndex != -1)
        {
            startIndex += startString.Length;
            int endIndex = input.IndexOf("'", startIndex);
            string subString = input.Substring(startIndex, endIndex - startIndex);
        }
于 2012-11-05T14:58:47.587 回答
-1

一个看起来像这样的 .NET Regex 就可以解决问题

^</script><div id='(?<attrValue>[^']+)'.*$

然后,您可以将值保留为

MatchCollection matches = Regex.Matches(input, @"^</script><div id='(?<attrValue>[^']+)'.*$");
if (matches.Count > 0)
{
    var attrValue = matches[0].Groups["attrValue"];
}
于 2012-11-01T17:02:42.930 回答