首页 新闻 会员 周边

c# 获取html纯文本,处理后在插入html中

0
悬赏园豆:100 [已解决问题] 解决于 2013-04-15 17:05

现在要处理一段html,我已经用NSoup提取出了其中的纯文本,经过处理后,我需要把纯文本插入原来的位置,纯文本的只是改变了文本的一些样式,如改变颜色,在需要改变颜色的字体上加上了<font>标签,求大神告知如何将处理后的文本返回回去。

老孟Flutter的主页 老孟Flutter | 初学一级 | 园豆:55
提问于:2013-04-11 11:31
< >
分享
最佳答案
0

提一个思路:

取出来的文本用List保存,并且在原文本插入占位符,如:

<p>博客园</p>
<p>写代码的小2B</p>

操作之后:

List<String> array = new List<String>();
array.Add("博客园");
array.Add("写代码的小2B");

// do something。

//然后把array还原到原文本里面。

 

<p>{0}</p>
<p>{1}</p>
收获园豆:80
写代码的小2B | 老鸟四级 |园豆:4371 | 2013-04-11 12:43

重点是怎么插入占位符,因为html数据的不规范性,我没有自己解析,而是使用NSoup解析的

老孟Flutter | 园豆:55 (初学一级) | 2013-04-11 15:16

@meng5619: 

以前没有用过NSoup发现还挺好用的。下面是我写的一个简单的例子,你感受一下:

class Program
    {
        static readonly String html = @"<h1>Hello<b>World</b></h1><p>博客园</p><p>写代码的小2B</p>";

        static void Main(string[] args)
        {
            NSoup.Nodes.Element doc = new NSoup.Nodes.Element(NSoup.Parse.Tag.ValueOf("Root"), String.Empty);
            doc.Append(html);

            Do(doc);

            Console.WriteLine(doc);

            Console.ReadKey();
        }

        static void Do(NSoup.Nodes.Node p)
        {
            for (var i = 0; i < p.ChildNodes.Count; i++)
            {
                var item = p.ChildNodes[i];
                if (item is NSoup.Nodes.TextNode)
                {
                    var e = new NSoup.Nodes.Element(NSoup.Parse.Tag.ValueOf("font"), String.Empty);
                    e.Text((item as NSoup.Nodes.TextNode).Text());
                    p.ReplaceChild(item, e);
                }
                if (item.ChildNodes.Count > 0)
                    Do(item);
            }
        }


    }
写代码的小2B | 园豆:4371 (老鸟四级) | 2013-04-11 16:32
其他回答(3)
0

应该从NSoup里的文档生成回去吧

收获园豆:5
Yu | 园豆:12980 (专家六级) | 2013-04-11 12:45

能具体点吗

支持(0) 反对(0) 老孟Flutter | 园豆:55 (初学一级) | 2013-04-11 15:16
0

没用过 NSoup,跟正则比性能怎么样

收获园豆:5
geass.. | 园豆:1821 (小虾三级) | 2013-04-11 17:45
0

你要的效果是像搜索结果关键词飘红加亮那样吗?可以用Highlighter.Net啊

如果是要解析或替换html,用jumony(http://jumony.codeplex.com/),作者也在园子里

收获园豆:10
Fred Chen | 园豆:364 (菜鸟二级) | 2013-04-11 22:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册