【问题标题】:regex specific tags from text?来自文本的正则表达式特定标签?
【发布时间】:2012-04-23 14:20:30
【问题描述】:

我有以下文字

<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 标记,并在其中插入 ul 标记中的所有元素和数组中的每个 ul 标记

【问题讨论】:

标签: c# regex string-matching


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    使用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();
    }
    

    【讨论】:

    • 非常感谢你,但我最不想得到 il id 像 foreach(var li in ul) {string id=li.id; Console.WriteLine(li); } 如何在 var list 中编写代码
    • 真的很想见你,用我自己的方式感谢你你解决了一个大问题 4 非常感谢你
    猜你喜欢
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多