Sto cercando di analizzare HTML con parser MSHTML in Delphi 10 Seattle. Funziona bene, ma i tag ARTICLE lo confondono, l'elemento ARTICLE analizzato non ha innerHTML e figli, sebbene siano lì.Tag ANALOGICO non valido per l'analisi di MSHTML
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
Variants,
ActiveX,
MSHTML;
procedure DoParse;
var
idoc: IHTMLDocument2;
iCollection: IHTMLElementCollection;
iElement: IHTMLElement;
V: OleVariant;
HTML: String;
i: Integer;
begin
Html :=
'<html>'#10+
'<head>'#10+
' <title>Articles</title>'#10+
'</head>'#10+
'<body>'#10+
' <article>'#10+
' <p>This is my Article</p>'#10+
' </article>'#10+
'</body>'#10+
'</html>';
v := VarArrayCreate([0,1], varVariant);
v[0]:= Html;
idoc := CoHTMLDocument.Create as IHTMLDocument2;
idoc.designMode := 'on';
idoc.write(PSafeArray(System.TVarData(v).VArray));
idoc.close;
iCollection := idoc.all as IHTMLElementCollection;
for i := 0 to iCollection.length-1 do
begin
iElement := iCollection.item(i, 0) as IHTMLElement;
if assigned(ielement) then
WriteLN(iElement.tagName + ': ' + iElement.outerHTML);
end;
end;
begin
try
DoParse;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
ReadLN;
end.
uscita del programma è
HTML: <HTML><HEAD><TITLE>Articles</TITLE>
<META name=GENERATOR content="MSHTML 11.00.9600.18283"></HEAD>
<BODY><ARTICLE>
<P>This is my Article</P></ARTICLE>undefined</BODY></HTML>
HEAD: <HEAD><TITLE>Articles</TITLE>
<META name=GENERATOR content="MSHTML 11.00.9600.18283"></HEAD>
TITLE: <TITLE>Articles</TITLE>
META:
<META name=GENERATOR content="MSHTML 11.00.9600.18283">
BODY:
<BODY><ARTICLE>
<P>This is my Article</P></ARTICLE>undefined</BODY>
ARTICLE: <ARTICLE>
P:
<P>This is my Article</P>
/ARTICLE: </ARTICLE>
Come si vede, ci sono errori con tag articolo, non ha contenuto e/ARTICOLO è definito come tag separato.
Qualcuno può aiutarmi a capire questo problema?
hai ragione, con lo spazio dei nomi aggiunto html è stato analizzato correttamente. ma ARTICLE non è un tag personalizzato, è un tag HTML5, e la pagina html originale di Real Source viene analizzata da IE 11 con successo (ho bisogno di analizzare la pagina live, sfortunatamente). Significa che ho problemi con la compatibilità di IE? Comunque, grazie mille per la spiegazione! –
Hai ragione, il problema è stato risolto aggiungendo la chiave di compatibilità al registro. Sebbene il documento originale sia stato definito con tag . Molte grazie! –
Prego. – kobik