Linq XML Как игнорировать HTML-код? - PullRequest
0 голосов
/ 15 октября 2011

Я использую Xelement - Linq to XML для анализа некоторых RSS-каналов.

Rss Пример:

    <item>
      <title>Waterfront Ice Skating</title>
      <link>http://www.eventfinder.co.nz/2011/sep/wellington/wellington-waterfront-ice-skating?utm_medium=rss</link>
      <description>&lt;p&gt;An ice skating rink in Wellington for a limited time only! 

Enjoy the magic of the New Zealand winter at an outdoor skating experience with all the fun and atmosphere of New York&amp;#039;s Rockefeller Centre or Central Park, ...&lt;/p&gt;&lt;p&gt;Wellington | Friday, 30 September 2011 - Sunday, 30 October 2011&lt;/p&gt;</description>
      <content:encoded><![CDATA[Today, Wellington Waterfront<br/>Wellington]]></content:encoded>
      <guid isPermalink="false">108703</guid>
      <pubDate>2011-09-30T10:00:00Z</pubDate>
      <enclosure url="http://s1.eventfinder.co.nz/uploads/events/transformed/190501-108703-13.jpg" length="5000" type="image/jpeg"></enclosure>
    </item>

Все работает нормально, но элемент description имеет много разметки html, чтоМне нужно удалить.

Описание:

<description>&lt;p&gt;An ice skating rink in Wellington for a limited time only! 

    Enjoy the magic of the New Zealand winter at an outdoor skating experience with all the fun and atmosphere of New York&amp;#039;s Rockefeller Centre or Central Park, ...&lt;/p&gt;&lt;p&gt;Wellington | Friday, 30 September 2011 - Sunday, 30 October 2011&lt;/p&gt;</description>

Может ли кто-нибудь помочь с этим?

Ответы [ 2 ]

3 голосов
/ 15 октября 2011

Если это RSSFeed, почему вы не используете System.ServiceModel.Syndication, SyncicationFeed в сочетании с читателем XML будет решать ваши проблемы с XmlEncoded

            using (XmlReader reader = XmlReader.Create(@"C:\\Users\\justMe\\myXml.xml"))
            {
                SyndicationFeed myFeed = SyndicationFeed.Load(reader);
                ...
            }

Затем удалите HTML-теги с регулярным выражением, как предложено @nemesv, или используйте что-то вроде этого

    public static string StripHTML(this string htmlText)
    {
        var reg = new Regex("<[^>]+>", RegexOptions.IgnoreCase);
        return HttpUtility.HtmlDecode(reg.Replace(htmlText, string.Empty));
    }
1 голос
/ 15 октября 2011

Сначала вы должны HtmlDecode для содержимого дескриптора с помощью System.Net.HttpUtility.HtmlDecode . Это заменяет закодированный &lt ;p&gt ; на

и затем вы можете удалить теги HTML с помощью регулярного выражения: Использование регулярных выражений C # для удаления тегов HTML или с другой библиотекой синтаксического анализа HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...