你可以试试下面的代码:
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之一)的一个实例,它增加了一个名为“根”只是为了能够创建根元素XDocument(每个XML文档都必须有一个根目录)。 XML文档的内容是从字符串中分析的。然后它得到包含文档文本表示的字符串 - 首先要做Root属性,因为“table”元素刚好在根节点下面,之后调用带有“table”的Element()方法获取第一个元素在根节点下面有名字“table”(在这个例子中,节点下面只有一个这样的元素),然后ToString()获得文本描述。
Regex.Matches用于从字符串中提取每个单独的元素,它返回MatchCollection,然后通过Cast()将其转换为IEnumerable,然后在IEnumerable上调用Select()扩展方法,该方法获取文本值对于IEnumerable中的每个匹配,使用Regex.Matches,然后通过ToArray()方法将这些值作为string []返回。
尝试http://htmlagilitypack.codeplex.com/代替 – Chandu 2012-07-06 12:12:39
拆分是不会做到这一点,甚至正则表达式将是痛苦的。 xml/html解析器是要走的路。 – 2012-07-06 12:15:17
是否可以在xslt文件中使用html解析器? – Timsen 2012-07-06 12:20:55