dennis1000 / verysimplexml Goto Github PK
View Code? Open in Web Editor NEWVerySimpleXML - a lightweight, one-unit, cross-platform XML reader/writer for Delphi
VerySimpleXML - a lightweight, one-unit, cross-platform XML reader/writer for Delphi
What steps will reproduce the problem?
1. Use any XML with target iOS
What is the expected output? What do you see instead?
Expected:<XML><a></a></XML>
Output: <XML></A></A></>
Original issue reported on code.google.com by dennis.spreen
on 7 Jan 2014 at 7:41
What steps will reproduce the problem?
1. Call aNode.NextSibling and sit in infinite loop
function TXmlNodeList.NextSibling(Node: TXmlNode): TXmlNode;
var
Index: Integer;
begin
if (not assigned(Node)) and (Count > 0) then
Result := First
else
begin
Index := Self.IndexOf(Node);
if (Index >= 0) and (Index + 1 < Count) then
Result := Self[Index + 1] //<- fix
else
Result := NIL;
end;
end;
function TXmlNodeList.PreviousSibling(Node: TXmlNode): TXmlNode;
var
Index: Integer;
begin
Index := Self.IndexOf(Node);
if Index - 1 >= 0 then
Result := Self[Index - 1] //<- fix
else
Result := NIL;
end;
Thank you for making my XML life easier ;-)
Original issue reported on code.google.com by [email protected]
on 20 Oct 2014 at 11:37
===resolve it:
destructor TXmlNode.Destroy;
begin
if assigned(Parent) then
Parent.ChildNodes.Extract(Self);
{$IFDEF Windows}
AttributeList.Free;
ChildNodes.Free;
{$ELSE}
AttributeList.DisposeOf;
ChildNodes.DisposeOf;
{$ENDIF}
inherited;
end;
Original issue reported on code.google.com by [email protected]
on 23 Feb 2014 at 4:57
fix with this
function TXmlNodeList.FindNodes(const Name: String; NodeTypes: TXmlNodeTypes = [ntElement]): TXmlNodeList;
var
Node: TXmlNode;
begin
Result := TXmlNodeList.Create(False);
Result.Document := Document;
try
for Node in Self do
if ((NodeTypes = []) or (Node.NodeType in NodeTypes)) and IsSame(Node.Name, Name) then
begin
Result.Parent := Node.Parent;
Result.Add(Node);
end;
Result.Parent := NIL;
except
Result.Free;
raise;
end;
end;
function TXmlNode.Find(const Name: String; NodeTypes: TXmlNodeTypes = [ntElement]): TXmlNode;
var
cur: TXmlNode;
begin
Result := ChildNodes.Find(Name, NodeTypes);
if not Assigned(Result) then
if ChildNodes.Count > 0 then
begin
cur := Self.ChildNodes[0];
Result := cur.Find(Name, NodeTypes);
end;
end;
function TXmlNode.Find(const Name, AttrName, AttrValue: String; NodeTypes: TXmlNodeTypes = [ntElement]): TXmlNode;
var
cur: TXmlNode;
begin
Result := ChildNodes.Find(Name, AttrName, AttrValue, NodeTypes);
if not Assigned(Result) then
if ChildNodes.Count > 0 then
begin
cur := Self.ChildNodes[0];
Result := cur.Find(Name, AttrName, AttrValue, NodeTypes);
end;
end;
function TXmlNode.Find(const Name, AttrName: String; NodeTypes: TXmlNodeTypes = [ntElement]): TXmlNode;
var
cur: TXmlNode;
begin
Result := ChildNodes.Find(Name, AttrName, NodeTypes);
if not Assigned(Result) then
if ChildNodes.Count > 0 then
begin
cur := Self.ChildNodes[0];
Result := cur.Find(Name, AttrName, NodeTypes);
end;
end;
function TXmlNode.FindNodes(const Name: String; NodeTypes: TXmlNodeTypes = [ntElement]): TXmlNodeList;
var
cur: TXmlNode;
begin
Result := ChildNodes.FindNodes(Name, NodeTypes);
if Assigned(Result) then
if Result.Count = 0 then
if ChildNodes.Count > 0 then
begin
FreeAndNil(Result); // free because its created temp
cur := Self.ChildNodes[0];
Result := cur.FindNodes(Name, NodeTypes);
end;
end;
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
raised exception class EEncodingError with message 'No mapping for the Unicode character exists in the target multi-byte code page'.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Please, remove unit scope names for compatibility with Delphi 2010 and XE.
Thank you for this library, I use it in several projects.
Hi,
I was using RS 10.1 Berlin with VerySimpleXML 2.0.3.
I updated RadStudio to version 10.3.2 Rio and and a bug appeared in VerySimpleXML.
With VerySimpleXML 2.0.5, the bug has been fixed but the IsSame function has been edited : now, it no longer removes the possible prefix in the name of the parsed node.
Is there a reason why the RemoveFirst function has been removed?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.