加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何使用HTML Agility Pack编辑HTML代码段

发布时间:2020-12-15 03:56:31 所属栏目:百科 来源:网络整理
导读:所以我有一个 HTML代码段,我想使用C#修改. divThis is a specialSearchWord that I want to link toimg src="anImage.jpg" /a href="foo.htm"A hyperlink/aSome more text and that specialSearchWord again./div 我想将其转换为: divThis is a a class="sp
所以我有一个 HTML代码段,我想使用C#修改.
<div>
This is a specialSearchWord that I want to link to
<img src="anImage.jpg" />
<a href="foo.htm">A hyperlink</a>
Some more text and that specialSearchWord again.
</div>

我想将其转换为:

<div>
This is a <a class="special" href="http://mysite.com/search/specialSearchWord">specialSearchWord</a> that I want to link to
<img src="anImage.jpg" />
<a href="foo.htm">A hyperlink</a>
Some more text and that <a class="special" href="http://mysite.com/search/specialSearchWord">specialSearchWord</a> again.
</div>

我将根据这里的许多建议使用HTML敏捷包,但我不知道我要去哪里.尤其是,

>如何加载部分片段作为字符串,而不是一个完整的HTML文档?
>如何编辑?
>然后如何返回编辑对象的文本字符串?

解决方法

>与完整的HTML文档相同.没关系
> 2个选项:您可以直接编辑InnerHtml属性(或文本节点上的Text),或者使用例如修改dom树. AppendChild,PrependChild等
>您可以使用HtmlDocument.DocumentNode.OuterHtml属性或使用HtmlDocument.Save方法(个人我更喜欢第二个选项).

对于解析,我选择在div中包含搜索项的文本节点,然后使用string.Replace方法替换它:

var doc = new HtmlDocument();
doc.LoadHtml(html);
var textNodes = doc.DocumentNode.SelectNodes("/div/text()[contains(.,'specialSearchWord')]");
if (textNodes != null)
    foreach (HtmlTextNode node in textNodes)
        node.Text = node.Text.Replace("specialSearchWord","<a class='special' href='http://mysite.com/search/specialSearchWord'>specialSearchWord</a>");

并将结果保存为字符串:

string result = null;
using (StringWriter writer = new StringWriter())
{
    doc.Save(writer);
    result = writer.ToString();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读