使用 CsQuery 将 DOM 元素替换为不同的元素

Replace a DOM element with a different element using CsQuery

A 有一个包含链接列表的 HTML 文档:

  <div class="toc">
     <ul class="content_list">
        <li><a href="...">Chapter 1</a></li>
        <li><a href="...">Chapter 2</a></li>
        <li><a href="...">Chapter 3</a></li>

有没有办法(使用 CsQuery)删除锚标记或用不同的元素(例如 <span> 替换它们)同时保留文本?

结果应该是这样的:

  <div class="toc">
     <ul class="content_list">
        <li>Chapter 1</li>

或者像这样:

  <div class="toc">
     <ul class="content_list">
        <li><span>Chapter 1</span></li>
var cq = new CsQuery.CQ(@"<div class=""toc""><ul class=""content_list"">
        <li><a href=""..."">Chapter 1</a></li>
        <li><a href=""..."">Chapter 2</a></li>
        <li><a href=""..."">Chapter 3</a></li>
</ul></div>");

cq[".toc > .content_list > li > a"]
    .Select(x => x.Cq())
    .ToList().ForEach(x => x.ReplaceWith(x.Text()));
    //or with a span wrapper
    //.ToList().ForEach(x => x.ReplaceWith(new CsQuery.CQ("<span/>").Text(x.Text())));

cq.Html().Dump();

本产品:

<ul class="content_list">
    <li>Chapter 1</li>
    <li>Chapter 2</li>
    <li>Chapter 3</li>
</ul>