* Improved whitespace handling (although it's still not perfect in all

cases)
This commit is contained in:
sg 2002-12-14 19:18:21 +00:00
parent a384390a05
commit fc1b32c275

View File

@ -466,6 +466,7 @@ var
Element: TDOMElement; Element: TDOMElement;
i: Integer; i: Integer;
begin begin
// WriteLn('Start: ', LocalName, '. Node buffer before: ', FNodeBuffer.Count, ' elements');
Element := FDocument.CreateElement(LocalName); Element := FDocument.CreateElement(LocalName);
if Assigned(Attr) then if Assigned(Attr) then
begin begin
@ -481,8 +482,9 @@ begin
NodeInfo.NodeType := ntTag; NodeInfo.NodeType := ntTag;
NodeInfo.DOMNode := Element; NodeInfo.DOMNode := Element;
if not Assigned(FDocument.DocumentElement) then if not Assigned(FDocument.DocumentElement) then
FDocument.AppendChild(NodeInfo.DOMNode); FDocument.AppendChild(Element);
FNodeBuffer.Add(NodeInfo); FNodeBuffer.Add(NodeInfo);
// WriteLn('Start: ', LocalName, '. Node buffer after: ', FNodeBuffer.Count, ' elements');
end; end;
procedure THTMLToDOMConverter.ReaderEndElement(Sender: TObject; procedure THTMLToDOMConverter.ReaderEndElement(Sender: TObject;
@ -491,9 +493,8 @@ var
NodeInfo, NodeInfo2: THTMLNodeInfo; NodeInfo, NodeInfo2: THTMLNodeInfo;
i, j: Integer; i, j: Integer;
TagInfo: PHTMLElementProps; TagInfo: PHTMLElementProps;
IsFirst: Boolean;
begin begin
// WriteLn('End: ', LocalName); // WriteLn('End: ', LocalName, '. Node buffer: ', FNodeBuffer.Count, ' elements');
// Find the matching start tag // Find the matching start tag
i := FNodeBuffer.Count - 1; i := FNodeBuffer.Count - 1;
while i >= 0 do while i >= 0 do
@ -513,7 +514,6 @@ begin
end; end;
Inc(i); Inc(i);
IsFirst := True;
while i < FNodeBuffer.Count do while i < FNodeBuffer.Count do
begin begin
NodeInfo2 := THTMLNodeInfo(FNodeBuffer.Items[i]); NodeInfo2 := THTMLNodeInfo(FNodeBuffer.Items[i]);
@ -529,11 +529,12 @@ begin
// Character data allowed, so normalize it // Character data allowed, so normalize it
NodeInfo2.DOMNode.NodeValue := ' '; NodeInfo2.DOMNode.NodeValue := ' ';
NodeInfo.DOMNode.AppendChild(NodeInfo2.DOMNode) NodeInfo.DOMNode.AppendChild(NodeInfo2.DOMNode)
end; end
else
NodeInfo.DOMNode.AppendChild(NodeInfo2.DOMNode);
NodeInfo2.Free; NodeInfo2.Free;
FNodeBuffer.Delete(i); FNodeBuffer.Delete(i);
IsFirst := False;
end; end;
break; break;
end; end;
@ -547,7 +548,11 @@ end.
{ {
$Log$ $Log$
Revision 1.3 2002-12-12 20:17:32 sg Revision 1.4 2002-12-14 19:18:21 sg
* Improved whitespace handling (although it's still not perfect in all
cases)
Revision 1.3 2002/12/12 20:17:32 sg
* More WideString fixes * More WideString fixes
Revision 1.2 2002/12/12 13:43:38 michael Revision 1.2 2002/12/12 13:43:38 michael