Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как распарсить письмо из Outlook в HTML формате? / 4 сообщений из 4, страница 1 из 1
24.07.2017, 12:34
    #39493913
I dont know
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как распарсить письмо из Outlook в HTML формате?
Доброго времени суток, ситуация такая: Есть письмо, отправленное из Outlook 2010 в HTML формате, нужно его распарсить, выдернув непосредственно текст сообщения. Собственно код письма:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri","sans-serif";
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri","sans-serif";
	mso-fareast-language:EN-US;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:2.0cm 42.5pt 2.0cm 3.0cm;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="RU" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><span lang="EN-US">NEW TEST SENDING! <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-line-height-alt:5.0pt"><span style="font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:navy;mso-fareast-language:RU">---</span><span style="font-size:12.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:navy;mso-fareast-language:RU"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-line-height-alt:5.0pt"><span style="font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:navy;mso-fareast-language:RU">у ХЧБЦЕОЙЕН
</span><span style="font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:navy;mso-fareast-language:RU"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-line-height-alt:5.0pt"><span style="font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:navy;mso-fareast-language:RU">пМЙЖЙТП лЙТЙММ</span><span style="font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:navy;mso-fareast-language:RU"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-line-height-alt:5.0pt"><span style="font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:navy;mso-fareast-language:RU">ПФДЕМ ТБЪЧЙФЙС Й УПРТПЧПЦДЕОЙС уьд злх фп гйффп З. фАНЕОШ</span><span style="font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:navy;mso-fareast-language:RU"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-line-height-alt:5.0pt"><span style="font-size:10.0pt;font-family:&quot;Arial&quot;,&quot;sans-serif&quot;;color:navy;mso-fareast-language:RU">Ф. (3452)566-060<o:p></o:p></span></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>





Код: pascal
1.
2.
3.
4.
html = createObject( "Msxml2.DOMDocument.6.0" /*"MSXml.DomDocument"*/)
html.validateOnParse = false
html.async = false 
html.loadXML(/* тест письма, тот что выше */)


Но при проверке кода ошибки имею такое сообщение:

Код: xml
1.
2.
3.
4.
5.
6.
Error: Тег конца "head" не соответствует тегу начала "meta".

Code: -1072896659
Line: 44
Linepos: 3
Str: </head>



Я так понимаю, что тег <meta> должен иметь закрывающую скобку, типа </meta> или хотя бы просто </>, но в коде письма, формируемом Outlook его нет. Это правильно или это особенность outlook? Можно ли как-нибудь обойти проверку на эти теги при парсинге, чтобы документ рапспарсился и я мог его дальше дербанить стандартными методами DomDocument?
...
Рейтинг: 0 / 0
24.07.2017, 22:29
    #39494251
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как распарсить письмо из Outlook в HTML формате?
Это не XML документ и, соответственно, XML парсеры его парсить не будут. Вам нужен HTML парсер. Например, MSHTML
...
Рейтинг: 0 / 0
25.07.2017, 12:15
    #39494489
I dont know
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как распарсить письмо из Outlook в HTML формате?
_Vasilisk_,

Вопрос решил. С помощью регулярки выкинул все теги(rexp.replace), на выходе чисты текст сообщения, то что нужно :)
...
Рейтинг: 0 / 0
22.08.2017, 15:39
    #39508813
TheMember
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как распарсить письмо из Outlook в HTML формате?
Это костыль. А решение все же было найдено или нет?
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как распарсить письмо из Outlook в HTML формате? / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]