удаление мусора MS Office из текстовой строки

У меня есть строка, содержащая кучу мусора MS Word, например:

<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>

</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]>

<style>
 /* Style Definitions */
 table.MsoNormalTable
    {mso-style-name:"Table Normal";
    mso-tstyle-rowband-size:0;
    mso-hansi-font-family:Calibri;
    mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->

Я пробовал функцию ниже, чтобы удалить его, но они удаляют только части и оставляют массу пробелов:

Public Function CleanOfficeJunk(html As String) As String
    ' start by completely removing all unwanted tags 
    html = System.Text.RegularExpressions.Regex.Replace(html, "<[/]?(font|span|xml|del|ins|[ovwxp]:\w+)[^>]*?>", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase)
    ' then run another pass over the html (twice), removing unwanted attributes 
    html = System.Text.RegularExpressions.Regex.Replace(html, "<([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w+)=(?:'[^']*'|""[^""]*""|[^\s>]+)([^>]*)>", "<$1$2>", System.Text.RegularExpressions.RegexOptions.IgnoreCase)
    html = System.Text.RegularExpressions.Regex.Replace(html, "<([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w+)=(?:'[^']*'|""[^""]*""|[^\s>]+)([^>]*)>", "<$1$2>", System.Text.RegularExpressions.RegexOptions.IgnoreCase)
    Return html
End Function

Я использую это в отчете службы отчетов SQL Server (SSRS), и мне нужно очистить строки, прежде чем отображать их в текстовом поле.

Есть ли лучший способ удалить такие вещи?

изменить: я видел это сообщение Удалить комментарии HTML с помощью Regex в Javascript

Но принятый ответ, похоже, не сработал в моей ситуации.


person SkyeBoniwell    schedule 04.02.2016    source источник
comment
Возможно ли, что ваша строка может содержать хорошие < OR >. Как бы нет, почему бы вам просто не удалить все, что заключено в < and >...   -  person zaggler    schedule 04.02.2016
comment
Он может содержать ‹br› здесь или там. Спасибо   -  person SkyeBoniwell    schedule 04.02.2016
comment
Последний вопрос, вам нужен только текст между тегом, который вы хотите указать? В основном только для тегов, которые вы разрешаете   -  person zaggler    schedule 04.02.2016
comment
@Codexer Я просто хочу удалить все, что находится между тегами xml и style. Если есть что-то вроде ‹span›привет...‹/span›, то я бы хотел сохранить это спасибо   -  person SkyeBoniwell    schedule 04.02.2016


Ответы (1)


Вы должны попробовать установить для свойства PlaceHolder значение HTML. Это решило мою проблему.

введите здесь описание изображения

person Altaf Patel    schedule 16.10.2017