Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как получить текст HTML элемента / 4 сообщений из 4, страница 1 из 1
28.05.2021, 17:33
    #40073885
LordGray
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить текст HTML элемента
Здравствуйте! Казалось бы, простой распространенный случай, но что-то не нахожу решения.
Код: html
1.
<span>123<button>abc</button></span>


Нужно получить текст из SPAN, но без текста вложенных элементов. Т.е. надо получить '123'
Что пробовал:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
procedure ExtractText(E: IHTMLElement);
var
  N: IHTMLDOMNode3;
begin
  ShowMessage(E.innerText);//123abc
  ShowMessage(E.outerText);//123abc
  ShowMessage(E.title);//''
  if Supports(E, IHTMLDOMNode3, N) then
  ShowMessage(N.textContent);//123abc
  ...


Других способов не знаю и не нашел. Может кто подскажет?
...
Рейтинг: 0 / 0
28.05.2021, 17:44
    #40073889
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить текст HTML элемента
Так не получится? (Псевдокод)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
if Supports(E, IHTMLDOMNode, Node) then begin
  childs := Node.childNodes;
  for child in childs do begin
    if Supports(child, IHTMLDOMTextNode, text) then
      ShowMessage(text.data);
  end;
end;

Скорее всего childs нужно будет кастануть к IHTMLElementCollection
...
Рейтинг: 0 / 0
28.05.2021, 18:14
    #40073906
LordGray
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить текст HTML элемента
_Vasilisk_,
Увы.
childNodes не поддерживает IHTMLElementCollection. В сети нашел, что он поддерживает IHTMLDOMChildrenCollection. Но это не спасло, т.к. не нашелся ни один IHTMLDOMTextNode.
Но идея понятна, и понравилась! Появились мысли, сейчас попробую, и потом отпишусь.
...
Рейтинг: 0 / 0
28.05.2021, 18:38
    #40073914
LordGray
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить текст HTML элемента
Получилось. Спасибо!

Код: pascal
1.
2.
3.
4.
5.
if Supports(E, IHTMLDOMNode, N) then 
  if Supports(N.childNodes, IHTMLDOMChildrenCollection, k2) then
  for i := 0 to k2.length - 1 do
    if Supports(k2.item(i), IHTMLDOMTextNode, text) then
      ShowMessage(text.data);
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как получить текст HTML элемента / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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