使用 CsQuery 将 DOM 元素替换为其他元素
本文关键字:元素 替换 其他 DOM CsQuery 使用 | 更新日期: 2023-09-27 18:37:20
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>