At work I also use laz_xmlcfg from Delphi, and I noticed that while it can
parse the following format, there is no way to retrieve the value "1000".

<!--- cutout, imagine std XML header here >
<connectivity>
   <answer_timeout id="2">1000</answer_timeout>
</connectivity>

The value is read into a #text child, but that is not queryable because the
last value in a getvalue path is always searched in the attributes node.

The following patch is a possible solution for that:

Index: C:/cansrc/libraries/lumen16/laz_xmlcfg.pas
===================================================================
--- C:/cansrc/libraries/lumen16/laz_xmlcfg.pas  (revision 330)
+++ C:/cansrc/libraries/lumen16/laz_xmlcfg.pas  (revision 344)
@@ -139,7 +139,7 @@
 
 function TXMLConfig.GetValue(const APath, ADefault: String): String;
 var
-  Node, Child, Attr: TDOMNode;
+  m,Node, Child, Attr: TDOMNode;
   NodeName: String;
   PathLen: integer;
   StartPos, EndPos: integer;
@@ -179,7 +179,12 @@
   //writeln('TXMLConfig.GetValue G2 NodeName="',NodeName,'"');
   Attr := Node.Attributes.GetNamedItem(NodeName);
   if Assigned(Attr) then
-    Result := Attr.NodeValue;
+    Result := Attr.NodeValue
+  else
+    begin
+      m:=node.FindNode('#text');
+      if assigned(m) then result:=m.NodeValue;
+    end;
   //CheckHeapWrtMemCnt('TXMLConfig.GetValue H');
   //writeln('TXMLConfig.GetValue END Result="',Result,'"');
 end;



_________________________________________________________________
     To unsubscribe: mail [EMAIL PROTECTED] with
                "unsubscribe" as the Subject
   archives at http://www.lazarus.freepascal.org/mailarchives

Reply via email to