如何只解析单个html行中的文本?

时间:2014-07-27 10:42:04

标签: c# asp.net .net

我有这一行:

<a  onmouseover="EnterContent('ToolTip','לחיילים ולתושבי הדרום באהבה','<u><span style=color:#000099;>כתב: רוטרית   בתאריך: 22.07.14  שעה: 08:56</span></u><br>המון רצון לעזור, להתנדב, להעניק, לפנק, לאהוב, ולחבק קיים היום בעם.<br>נצלו אשכול זה לפרסם דברים שיוכלו לעזור לחיילים ולתושבי הדרום.<br><br>חיילים, ותו...'); Activate();" onmouseout="deActivate()" href="javascript:void(0)"> 

从这一行开始,我只需要获得希伯来语。 要删除所有标签和onmouseover和工具提示和无效,只留下希伯来语和部分中的单词:בתאריך:22.07.14שעה:08:56

或者在这种情况下:

<a  onmouseover="EnterContent('ToolTip','אין לדווח בפורום על תנועת כוחות, סדרי כוחות, פעילות מבצעית וכל דיווח המסכן חיי חיילים','<u><span style=color:#000099;>כתב: מובחר   בתאריך: 17.07.14  שעה: 23:20</span></u><br>[anchor:אשכול עוגן מתאריך  17.07.14 בשעה  23:20  על-ידי  Maya, (גלובל)]במסגרת הכניסה הקרקעית במבצע צוק איתן, ההנהלה פונה אליכם ומבקשת בכל לשון של בקשה...'); Activate();" onmouseout="deActivate()" href="javascript:void(0)"> 

再次留下所有希伯来语单词并且:מתאריך17.07.14בשעה23:20

我该怎么做?

我有这个用来解析文本的方法:

public List<string> CreateTextList(string filePath)
        {
            List<string> text = new List<string>();
            var htmlDoc = new HtmlAgilityPack.HtmlDocument();
            htmlDoc.OptionFixNestedTags = true;
            htmlDoc.Load(filePath, System.Text.Encoding.GetEncoding(65001));

            if (htmlDoc.DocumentNode != null)
            {
                var nodes = htmlDoc.DocumentNode.SelectNodes("//a/b");
                foreach (var node in nodes)
                {
                    text.Add(node.InnerText);

                }
            }
            text = Filters.filterNumbers(text);
            return text;
        }

它运行良好,但是文件不是行/文本。

2 个答案:

答案 0 :(得分:1)

而不是HtmlDocument.Load(string path)使用方法HtmlDocument.LoadHtml(string html)

string html = "<a  onmouseover=\"EnterContent('ToolTip....";
var htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(html);

答案 1 :(得分:1)

嗯,如果使用行,则不能使用XML解析器(如果没有整个结构,则无法遍历XML树结构)。

但正如此处所示:https://stackoverflow.com/a/19524158/1648371

您可以使用

string noHTML = Regex.Replace(inputHTML, @"<[^>]+>|&nbsp;", "").Trim();

要检索字符串而不是用空格替换HTML字符,可以用输入中没有的特殊字符替换它们(如瑞典字母å),然后

Regex.Matches(noHTML, "å", RegexOptions.IgnoreCase))