środa, 28 października 2009

Zmiana wartości do kluczy w pliku XML

Wymagane jest wcześniejsze stworzenie listy kluczy i listy odpowiadających im wartości

function BOOL XMLFileChange(szFile, nvListXMLKey, nvListXMLValue, bLog)
BOOL bResult;
LIST ListaPlikXML, ListaXMLLine;
STRING szLine, szKey, szValue, szString, szXMLLine, szFind, szEndLine;
INT i, j, k;
BOOL bKoniecLinii;
begin
bResult = FALSE;
if bLog then WriteLog(0,"Odczyt pliku XML ..."); endif;
if Is(FILE_EXISTS,szFile) then
ListaPlikXML = ListCreate(STRINGLIST);
if ListReadFromFile(ListaPlikXML,szFile)=0 then
ListSetIndex(ListaPlikXML, LISTFIRST);
for i=0 to ListCount(ListaPlikXML)-1
ListaXMLLine = ListCreate(STRINGLIST);
ListCurrentString(ListaPlikXML, szLine);
StrGetTokens ( ListaXMLLine, szLine , " " );
ListSetIndex(nvListXMLKey,LISTFIRST);
ListSetIndex(nvListXMLValue,LISTFIRST);
for j = 0 to ListCount(nvListXMLKey)-1
ListCurrentString(nvListXMLKey, szKey);
ListCurrentString(nvListXMLValue, szValue);
szString = szKey+"="+szValue;

ListSetIndex(ListaXMLLine,LISTFIRST);
for k=0 to ListCount(ListaXMLLine)-1
bKoniecLinii = FALSE;
ListCurrentString(ListaXMLLine, szFind);
if (StrFind(szFind,"/>")>0) then
bKoniecLinii = TRUE;
szEndLine = "/>";
elseif (StrFind(szFind,">")>0) then
bKoniecLinii = TRUE;
szEndLine = ">";
endif;

if StrFind(szFind,szKey)>=0 then
if (bLog) then WriteLog(1,"- zapis klucza \""+szKey+"\"");endif;
if bKoniecLinii then szString = szString+szEndLine; endif; //Dodanie konca linii
ListSetCurrentString(ListaXMLLine, szString); //zamien klucz z wartoscia
endif;

ListSetIndex(ListaXMLLine,LISTNEXT);
endfor;

ListSetIndex(nvListXMLKey,LISTNEXT);
ListSetIndex(nvListXMLValue,LISTNEXT);
endfor;

szXMLLine = "";
ListSetIndex(ListaXMLLine,LISTFIRST);
for k=0 to ListCount(ListaXMLLine)-1
ListCurrentString(ListaXMLLine, szString);
if StrLength(szXMLLine)>0 then
szXMLLine = szXMLLine + " " + szString;
else
szXMLLine = szString;
endif;
ListSetIndex(ListaXMLLine,LISTNEXT);
endfor;

ListSetCurrentString(ListaPlikXML, szXMLLine);
ListSetIndex(ListaPlikXML, LISTNEXT);
ListDestroy(ListaXMLLine);
endfor;


//Zapis pliku XML
if bLog then WriteLog(0,"Zapis pliku XML ..."); endif;
if ListWriteToFile(ListaPlikXML,szFile)=0 then //Odczyt pliku XML do listy
bResult = TRUE;
else
if bLog then WriteLog(0,"Wystąpił błąd zapisu pliku XML \""+szFile+"\" z listy XML"); endif;
endif;
else
if bLog then WriteLog(0,"Wystąpił błąd odczytu pliku XML\""+szFile+"\" do listy XML"); endif;
endif;
else
if bLog then WriteLog(0,"Plik XML \""+szFile+"\" nie istnieje!"); endif;
endif;


return bResult;
end;

Brak komentarzy:

Prześlij komentarz