1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
function TForm1.getValue(entite : string;parent : string; occurrence : integer):string;
var
i,k,ret_val,count,comp : Integer;
strData,Xparent: String;
begin
{
Before inserting data in to the country table,
make sure that the data in the generated xml
file (country.xml) and country table (DBDEMOS)
are different.
}
try
begin
//table1.Active := true;
//table1.close;
//table1.open;
//table1.active:=true;
//table1.Insert;
count:=1;
comp:=0;
DataList:=TStringList.Create;
memo1.Clear;
doc := CreateOleObject('Microsoft.XMLDOM')
as IXMLDomDocument;
//Load country.xml file
doc.load('C:\fichiers\'+XMLfiles.Items[XMLfiles.ItemIndex]); *
//nlist:=doc.getElementsByTagName(Entity.Text);
//la liste de l'entité saisie dans l'edit
nlist:=doc.getElementsByTagName(entite);
//DataList.Add(Entity.Text);
memo1.lines.append('Table Name : MsgxmlEvePat_j.DB');
memo1.lines.append('------------------------------');
for i:=0 to nlist.Get_length-1 do begin
//Xparent prend le nom du parent de l'entité saisie (de la i éme position)
Xparent := nlist.Get_item(i).parentNode.nodeName;
//si le nom parent courant n'est pas vide ,et ne correspond pas à celui passé en paramétre
//on sort de la boucle
if (parent <> '') and (Xparent <> parent) then
continue
//si le parent passé en paramétre est trouvé, on incrèmente un compteur
else comp:= comp+1;
//si le compteur n'égale pas à l'occurrence passée en paramétre on sort
if( comp <> occurrence ) then
continue;
//affichage dans le memo
memo1.lines.append('======= (Occurrence n° '+inttostr(count)+') =======');
memo1.lines.append('[ Noeud parent : '+Xparent+' ]');
//-- now get the list of attributes for this Element node
Attributs := '';
//on parcourt la liste de cette entité
for k:=0 to nlist.Get_item(i).Get_Attributes.length-1 do
begin
//AttrNode prend la liste des attibuts de cette entité
AttrNode := nlist.Get_item(i).Get_Attributes.item[k];
//AttrName prend le nom de cet attribut
AttrName := AttrNode.nodeName;
//AttrName prend le valeur de cet attribut
AttrVal := AttrNode.text;
//this is for displaying a
//single record on the memo
//attributs concaténe l'ensemble des attributs trouvées pour cette entité
// sous forme(..:...)(..:..)(..:..)
Attributs := Attributs + ' {'+AttrName+' : '+AttrVal+'}';
//AttrNode := AttrNode.Get_Attributes.item[k];
end;
DataList.Add(entite);
//si attributs n'est pas vide on le ajoute à DataList
if Attributs <> '' then
DataList.Add(Attributs);
//fonction récursive sur les noeud fils de cet entité
travelChildren(nlist.Get_item(i).Get_childNodes);
//Removes the first character(,)
//from dataRecord
strData:=copy(dataRecord,1,length(dataRecord));
getValue:=strData;
//showMessage('entite vaut '+strData);
memo1.lines.add(strData);
dataRecord:='';
//ret_val:=insertintotable(Datalist);
//if ret_val=1 then
//memo1.lines.add
// ('Data inserted successfully.............!')
//else if ret_val=-1 then
//memo1.lines.add
//('Error while updating.....Try again.....!');
//memo1.lines.append
//(' ');
DataList.Clear;
count:=count+1;
end;
end;
except
on e:Exception do
Showmessage(e.message);
end;
end; |
Partager