[yunqa.de] DIXML: Problem with % in tag tribute

  • From: Robert Arlavi <robert.arlavi@xxxxxxxxxx>
  • To: yunqa@xxxxxxxxxxxxx
  • Date: Fri, 15 Jun 2012 17:43:24 +0200 (CEST)

In Delphi XE, I'm having problem with DIXML component, it does not write items 
into xml, and if I use error handler then i get : Out of memory. 

Here is short version of what im doing: 

var 
test: string; 
field_name8, field_value8: UTF8String; 
Writer: xmlTextWriterPtr; 
begin 

Writer := xmlNewTextWriterFilename(PAnsiChar(UTF8Encode('d:\test.xml')), 0); 
xmlTextWriterSetIndent(Writer, 1); // Indent output. 
xmlTextWriterSetIndentString(Writer, #$20#$20); // Indent by 2 spaces. 
xmlTextWriterStartDocument(Writer, nil, 'UTF-8', nil); 

xmlTextWriterStartElement(Writer, PAnsiChar(UTF8Encode('Export'))); 

xmlTextWriterStartElement(Writer, PAnsiChar(UTF8Encode('AtributList'))); 

for I := 0 to 1 do 
begin 

xmlTextWriterStartElement(Writer, PAnsiChar(UTF8Encode('Atribut'))); 
field_name8:=UTF8Encode('test'); 
field_value8:=UTF8Encode('5 - 95'); 
xmlTextWriterWriteFormatAttribute(Writer,PAnsiChar(field_name8),PAnsiChar(field_value8));
 

field_name8:=UTF8Encode('value'); 
field_value8:=UTF8Encode('5% - 95'); 
xmlTextWriterWriteFormatAttribute(Writer,PAnsiChar(field_name8),PAnsiChar(field_value8));
 

field_name8:=UTF8Encode('valu2'); 
field_value8:=UTF8Encode('5 - 95 %'); 
xmlTextWriterWriteFormatAttribute(Writer,PAnsiChar(field_name8),PAnsiChar(field_value8));
 

xmlTextWriterEndElement(Writer); // Atribut 
end; 

xmlTextWriterEndElement(Writer); // AtributList 

xmlTextWriterEndElement(Writer); // Export 

xmlTextWriterEndDocument(Writer); 
xmlFreeTextWriter(Writer); 

end; 

When i run this i get 

<?xml version="1.0" encoding="UTF-8"?> 
<Export> 
<AtributList> 
<Atribut test="5 - 95"/> 
<Atribut test="5 - 95"/> 
</AtributList> 
</Export> 

As you can see I'm missing atributes that have value % in their value. 
If i add xmlSetStructuredErrorFunc(nil, OnDIXMLError); 
then in OnDIXMLError i get out of memory error message , exact message is : 
"xmlTextWriterVSprintf : out of memory" . 


How to solve this ? 

Best regards. 

-- 

Robert Arlavi 
razvoj poslovnih aplikacija 

Tomsoft d.o.o. 
IV Vrbik 6, 10 000 Zagreb, Croatia 

T: +385 1 618 3222 
F: +385 1 619 5100 

info@xxxxxxxxxx | www.tomsoft.hr | www.luceed.com 

Other related posts: