Ich versuche, HTML von MSHTML-Parser in Delphi 10 Seattle zu analysieren. Es funktioniert gut, aber Artikel Tag verwirren es, geparsten Artikel Element hat nicht innerHTML und Kinder, obwohl sie da sind.Ungültiges Analysieren von ARTIKEL-Tag durch 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.
Ausgabe des Programms ist
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>
Wie Sie sehen, gibt es Fehler Artikel-Tag, es hat keinen Inhalt und/ARTIKEL wird als separater Tag definiert.
Kann mir jemand helfen, dieses Problem zu verstehen?
Sie haben Recht, mit Namespace hinzugefügt HTML wurde korrekt analysiert. aber ARTICLE ist kein benutzerdefiniertes Tag, es ist ein HTML5-Tag, und die originale HTML-Seite aus der echten Quelle wird erfolgreich vom IE 11 analysiert (ich brauche leider eine Live-Seite zu parsen). Bedeutet es, dass ich Probleme mit der Kompatibilität von IE habe? Wie auch immer, vielen Dank für die Erklärung! –
Sie haben Recht, das Problem wurde gelöst, indem der Registrierungsschlüssel den Kompatibilitätsschlüssel hinzugefügt wurde. Das Originaldokument wurde zwar mit den Tags definiert. Danke vielmals! –
Gern geschehen. – kobik