2

我想拆分一串html标签。例如我有一个字符串:

<p></p>

<table>

<table><p></p></table>


</table>

我要检索的是:

<table>

<table><p></p></table>


</table>

现在的问题是当我打电话时:

string[] values = pContent.Split(new string[] {"<table>","</table>" }, StringSplitOptions.RemoveEmptyEntries);

我越来越 :

<table>

    <table><p></p>

我怎么得到剩下的?

4

1 回答 1

4

您可以尝试以下代码:

        string input = String.Concat("<root>", @"<p></p><table><table><p></p></table></table>", "</root>");

        XDocument doc = XDocument.Parse(input);
        var valuesStr = doc.Root.Element("table").ToString();
        string[] values = Regex.Matches(valuesStr, @"<.+?>")
            .Cast<Match>()
            .Select(o => o.Groups[0].Value)
            .ToArray();

它首先创建一个 XDocument 类的实例(用于解析 XML 的类之一),它添加名为“root”的根元素只是为了能够创建 XDocument(每个 XML 文档都必须有一个根)。XML 文档的内容是从字符串中解析出来的。然后它获取包含文档的文本表示的字符串 - 首先访问 Root 属性,因为“table”元素就在根节点下方,之后调用带有“table”的 Element() 方法获取第一个元素根下的名称为“table”(在此示例中,节点下只有一个这样的元素),然后 ToString() 获取文本描述。

Regex.Matches 用于从字符串中提取每个元素,它返回 MatchCollection,然后通过 Cast() 将其转换为 IEnumerable,然后在 IEnumerable 上调用 Select() 扩展方法,获取 Regex.Matches 捕获的文本值IEnumerable 中的每个 Match,然后这些值通过 ToArray() 方法作为 string[] 返回。

于 2012-07-06T12:44:10.363 回答