|
@@ -78,6 +78,7 @@ type
|
|
|
|
|
|
THTMLNodeInfo = class
|
|
THTMLNodeInfo = class
|
|
NodeType: THTMLNodeType;
|
|
NodeType: THTMLNodeType;
|
|
|
|
+ Closed: Boolean;
|
|
DOMNode: TDOMNode;
|
|
DOMNode: TDOMNode;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -85,7 +86,6 @@ type
|
|
private
|
|
private
|
|
FReader: THTMLReader;
|
|
FReader: THTMLReader;
|
|
FDocument: TDOMDocument;
|
|
FDocument: TDOMDocument;
|
|
- FElementStack: TList;
|
|
|
|
FNodeBuffer: TList;
|
|
FNodeBuffer: TList;
|
|
IsFragmentMode, FragmentRootSet: Boolean;
|
|
IsFragmentMode, FragmentRootSet: Boolean;
|
|
FragmentRoot: TDOMNode;
|
|
FragmentRoot: TDOMNode;
|
|
@@ -545,7 +545,6 @@ begin
|
|
FReader.OnStartElement := @ReaderStartElement;
|
|
FReader.OnStartElement := @ReaderStartElement;
|
|
FReader.OnEndElement := @ReaderEndElement;
|
|
FReader.OnEndElement := @ReaderEndElement;
|
|
FDocument := ADocument;
|
|
FDocument := ADocument;
|
|
- FElementStack := TList.Create;
|
|
|
|
FNodeBuffer := TList.Create;
|
|
FNodeBuffer := TList.Create;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -566,7 +565,6 @@ begin
|
|
THTMLNodeInfo(FNodeBuffer[i]).Free;
|
|
THTMLNodeInfo(FNodeBuffer[i]).Free;
|
|
FNodeBuffer.Free;
|
|
FNodeBuffer.Free;
|
|
|
|
|
|
- FElementStack.Free;
|
|
|
|
inherited Destroy;
|
|
inherited Destroy;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -653,7 +651,7 @@ begin
|
|
while i >= 0 do
|
|
while i >= 0 do
|
|
begin
|
|
begin
|
|
NodeInfo := THTMLNodeInfo(FNodeBuffer.Items[i]);
|
|
NodeInfo := THTMLNodeInfo(FNodeBuffer.Items[i]);
|
|
- if (NodeInfo.NodeType = ntTag) and
|
|
|
|
|
|
+ if (NodeInfo.NodeType = ntTag) and (not NodeInfo.Closed) and
|
|
(CompareText(NodeInfo.DOMNode.NodeName, LocalName) = 0) then
|
|
(CompareText(NodeInfo.DOMNode.NodeName, LocalName) = 0) then
|
|
begin
|
|
begin
|
|
// We found the matching start tag
|
|
// We found the matching start tag
|
|
@@ -689,6 +687,7 @@ begin
|
|
NodeInfo2.Free;
|
|
NodeInfo2.Free;
|
|
FNodeBuffer.Delete(i);
|
|
FNodeBuffer.Delete(i);
|
|
end;
|
|
end;
|
|
|
|
+ NodeInfo.Closed := True;
|
|
break;
|
|
break;
|
|
end;
|
|
end;
|
|
Dec(i);
|
|
Dec(i);
|