【问题标题】:How can i parse only the text from a single html line?如何仅解析单个 html 行中的文本?
【发布时间】:2014-09-18 17:57:25
【问题描述】:

我有这行:

<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)"> 

从这一行我只需要得到希伯来语单词。 删除所有标签和鼠标悬停和工具提示和无效,只留下希伯来语和部分中的单词:בתאריך: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;
        }

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

【问题讨论】:

    标签: c# asp.net .net


    【解决方案1】:

    好吧,如果你使用行,你就不能使用 XML 解析器(如果你没有整个结构,你就不能遍历 XML 树结构)。

    但正如这里建议的那样:https://stackoverflow.com/a/19524158/1648371

    你可以使用

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

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

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

    【讨论】:

      【解决方案2】:

      使用HtmlDocument.LoadHtml(string html)的方法代替HtmlDocument.Load(string path)

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

      【讨论】:

        猜你喜欢
        • 2020-06-07
        • 2018-10-26
        • 1970-01-01
        • 2015-12-02
        • 1970-01-01
        • 2016-04-05
        • 2014-07-26
        • 2012-01-05
        • 1970-01-01
        相关资源
        最近更新 更多