HTML -> XML

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

HTML -> XML

Сообщение shade » 09.05.2007 20:47:20

Нужно преобразовать HTML документ в аналогичный XML для последующей обработки.

Думал использовать MSHTML - текст загрузил, а как преобразовать не знаю. Думал что может приведение типа ( xdoc := doc.documentElement as IXMLDOMElement ) не помогло, интерфейс не поддерживается.

Видимо лучший вариант - сделать обход дерева элементов doc.documentElement: IHTMLElement - на сколько я понял корневой элемент, т.е. <HTML>, а как пройтись по его потомкам не понятно: есть свойство children, но оно IDispatch?..

// Delphi
Код: Выделить всё
program test;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils, Variants, ActiveX, MSHTML;

function AnsiToDos(const S: string): string;
begin
  SetLength(Result, Length(S));
  CharToOem(@S[1], @Result[1]);
end;

procedure do_test;
var doc: DispHTMLDocument;
begin
  doc := CoHTMLDocument.Create;
  doc.write('<html>');
  writeln(doc.documentElement.outerHTML);
end;

begin
  CoInitialize(nil);
  try
    writeln('MSHTML example');
    do_test;
    writeln;
    writeln('ok');
  except
    on E: Exception do
    begin
      writeln;
      writeln(E.ClassName, ': ', AnsiToDos(E.Message));
    end;
  end;
  readln;
  CoUninitialize;
end.
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Yogrik » 09.05.2007 22:18:53

С начало конвертировать в XHTML с помощью tidy
А потом открыть парсером XML
Yogrik
постоялец
 
Сообщения: 116
Зарегистрирован: 23.03.2006 00:41:48

Сообщение shade » 09.05.2007 22:57:16

Попробовал tidy, точнее врапер Delphi/Object Pascal и их демку.
На первой же html-ке выдал ошибки, в частности 155: 2 (Errror) [5.5.2.1]: <table> missing <caption>.
А исправленого контента нету :(
Нужно чтобы вне зависимости от ошибок выдавался более-менее ожидаемый результат.

В случае MSHTML обход почти реализовал, осталась проблема - получить список атрибутов для элемента IHTMLElement...
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Yogrik » 09.05.2007 23:15:46

А какую именно демку???
Yogrik
постоялец
 
Сообщения: 116
Зарегистрирован: 23.03.2006 00:41:48

Сообщение shade » 09.05.2007 23:28:25

в приведенной ссылке
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru