Powershell. ConvertFrom-HTML

По аналогии с командлетом ConvertTo-HTML, хотелось бы видеть в Powershell командлет ConvertFrom-HTML, для конвертирования текста с тегами в обычный  форматированный текст. Давайте посмотрим на один  простой метод обхода отсутствия такого командлета

На момент выпуска Powershell 7 такую функцию еще не реализовали, но есть достаточно простое решение.

Смысл метода заключается в:

  • создании пустого объекта HTMLFile, аналогичного тому, что мы получаем с помощью Invoke-WebRequest
  • последующего обращения к его параметру innerText для получения текста без тегов

Пример того что мы имеем на входе:

$Text = @"
<div style="font-family:Arial; color:#000000; font-size:10pt">С уважением,<br />
<strong>Иван Иванов</strong><br />
Системный администратор<br />
<br />
<a href="mailto:email@domain.ru">email@domain.ru</a> | <a href="http://www.website.ru">www.website.ru</a></div>
"@

Сам код для извлечения текста достаточно компактный:

$HTML = New-Object -ComObject "HTMLFile"
$src = [System.Text.Encoding]::Unicode.GetBytes($text)
try{
    # Вариант для PowerShell 4
    $HTML.IHTMLDocument2_write($src)
}
catch{
    # Вариант для PowerShell 5
    $HTML.write($src)
}

( $HTML.all | ? { $_.tagname -eq 'body' } ).innerText

Добавить комментарий

Ваш адрес email не будет опубликован.