2012-04-11 98 views
0

我有以下文字来自文本的正则表达式特定标签?

<fieldset> 
<ul id="ContentPlaceHolder2_1g" class="profList column ui-sortable"> 
<legend class="group">المجموعه 1</legend> 
<li id="ContentPlaceHolder2_8">محمود حسن ابراهيم عبد الصمد</li> 
/ul></fieldset> 
    <fieldset> 
<ul id="ContentPlaceHolder2_2g" class="profList column ui-sortable"> 
<legend class="group">المجموعه 2</legend> 
<li id="ContentPlaceHolder2_9">محمود فتحى ابراهيم عبد الصمد</li> 
    <li id="ContentPlaceHolder2_10">احمد محسن احمد على</li> 
    <li class="" style="" id="ContentPlaceHolder2_3">احمد درويش محمود عباس</li> 
</ul> 
</fieldset> 

<fieldset> 
    <ul id="ContentPlaceHolder2_3g" class="profList column ui-sortable"> 
    <legend class="group">المجموعه 3</legend> 
<li id="ContentPlaceHolder2_11">محمد سيد محمد سيد</li> 
    </ul> 

</fieldset> 

我想遍历它让每一个UL标签和IL里面inedd在UL标签的所有elemet和阵列的每个UL标签

+0

看一看[除XHTML自足标签的正则表达式匹配开放标签(http://stackoverflow.com/问题/ 1732348 /正则表达式匹配open-tags-except-xhtml-self-contained-tags) – jtbandes 2012-04-11 09:33:45

回答

1

使用HtmlAgilityPack

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(html); 
var list = doc.DocumentNode.Descendants("ul") 
    .Select(n => n.Descendants("li").Select(li => new {id=li.Id,text=li.InnerText }).ToList()) 
    .ToList(); 

foreach (var ul in list) 
{ 
    foreach(var li in ul) 
    { 
     Console.WriteLine(li.id + " " + li.text); 
    } 
    Console.WriteLine(); 
} 
+0

好的如何循环提取每个il和它的文本的id – 2012-04-11 10:06:26

+1

@ahmednaguib看到答案。我更新了。 – 2012-04-11 10:19:40

+0

非常感谢你,但是最后一件事情是我希望得到像ilach这样的il id(var ul in ul) {string id = li.id; Console.WriteLine(li); }如何在var列表中编码 – 2012-04-11 11:07:07

2

这是一个坏主意用RegEx解析html。可能是你应该考虑到DOM解析器,例如Html Agility Pack