Удалить часть HTML в теле сообщения EWS EmailMessage - PullRequest
0 голосов
/ 31 октября 2019

Я хотел бы удалить часть HTML содержимого EWS EmailMessage .Body.Text, прежде чем ответить через ResponseMessage в C#

Содержимое, которое нужно удалить, содержит следующие данные:Кнопки html, нажимаемые и не кликабельные.

Я вижу, что мы не можем объявить наши собственные пользовательские теги, поэтому я не могу использовать string.replace, обнаруживая пользовательские теги html.

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

<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100.0%">
<tbody>
<tr>
<td style="padding:0in 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif">&nbsp;<o:p></o:p></span></p>
</td>
<td width="30%" style="width:30.0%;background:#17202A;padding:4.5pt 4.5pt 4.5pt 4.5pt;display:inline-block">
<p class="MsoNormal" align="center" style="text-align:center"><b><span style="font-size:11.5pt;font-family:&quot;Helvetica&quot;,sans-serif;color:white">ACTION: ADD
<o:p></o:p></span></b></p>
</td>
<td style="padding:0in 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif">&nbsp;<o:p></o:p></span></p>
</td>
<td width="30%" style="width:30.0%;background:#17202A;padding:4.5pt 4.5pt 4.5pt 4.5pt;display:inline-block">
<p class="MsoNormal" align="center" style="text-align:center"><b><span style="font-size:11.5pt;font-family:&quot;Helvetica&quot;,sans-serif;color:white">ACTION: MINUS
<o:p></o:p></span></b></p>
</td>
<td style="padding:0in 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif">&nbsp;<o:p></o:p></span></p>
</td>
<td width="20%" style="width:20.0%;background:#3A69C2;padding:4.5pt 4.5pt 4.5pt 4.5pt;display:inline-block">
<p class="MsoNormal" align="center" style="text-align:center"><b><span style="font-size:11.5pt;font-family:&quot;Helvetica&quot;,sans-serif;color:white"><a href="mailto:test.com?subject=[MULTIPLY];body=ACTION:%20MULTIPLY"><span style="color:white;background:#3A69C2;text-decoration:none">MULTIPLY
</span></a><o:p></o:p></span></b></p>
</td>
<td style="padding:0in 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif">&nbsp;<o:p></o:p></span></p>
</td>
<td width="20%" style="width:20.0%;background:#3A69C2;padding:4.5pt 4.5pt 4.5pt 4.5pt;display:inline-block">
<p class="MsoNormal" align="center" style="text-align:center"><b><span style="font-size:11.5pt;font-family:&quot;Helvetica&quot;,sans-serif;color:white"><a href="mailto:test.com?subject=[DIVIDE];body=ACTION:%20DIVIDE"><span style="color:white;background:#3A69C2;text-decoration:none">DIVIDE
</span></a><o:p></o:p></span></b></p>
</td>
<td style="padding:0in 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif">&nbsp;<o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Предполагая, что вы хотите удалить таблицу, содержащую кнопки «Умножить» и «Разделить», и что они не будут найдены где-либо еще в документе, мы можем использовать их в сочетании с XPath, чтобы найти таблицу и удалить ее. Вы могли бы использовать встроенный класс XMLDocument, но в качестве этого HTML я рекомендую использовать HTMLAgilityPack (доступный как пакет nuget) для анализа HTML.

В итоге вы получитес чем-то вроде:

//Create a HTMLAgilityPack Document
HtmlDocument doc = new HtmlDocument();
//Load the email body
doc.LoadHtml(EmailMessage.Body.Text);
//Select the ancestor table of the link we're interested in
HtmlNode node = doc.DocumentNode.SelectSingleNode("//a[@href='mailto:test.com?subject=[DIVIDE];body=ACTION:%20DIVIDE']//ancestor::table");
//Remove the table
node.Remove();

//Get the new email body
string newBody = doc.DocumentNode.InnerHtml;

Возможно, вам придется немного подправить, чтобы вы там оказались, но, надеюсь, это хорошее начало.

1 голос
/ 01 ноября 2019

Не могли бы вы использовать атрибут Id тегов html https://www.w3schools.com/tags/att_id.asp для определения тегов, которые вы хотите удалить?

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