所以我有一个
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方法(个人我更喜欢第二个选项).
> 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(); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。