Einzelnen Beitrag anzeigen

golffahrer

Registriert seit: 5. Apr 2011
12 Beiträge
 
#19

AW: An alle Programmierhengste: XML lesen

  Alt 5. Apr 2011, 17:04
Nochmal von vorne. Ich sende einen Befehl zum Lieferanten und bekomme folgendes zurück:

<item>
<number>123456789</number>
<unitprice>0,00</unitprice>
<description1>Testartikel</description1>
<description2>und so weiter...</description2>
<infourl>
http://testpfad.de/test.HTM
</infourl>
<pictureurl>
http://testpfad.de/test.JPG
</pictureurl>
</item>

Ich entnehme die Daten aus den Knoten und speichere Sie in die Datenbank. Wie Ihr seht gibt es ein <infourl>.
Ich nehme den Pfad http://testpfad.de/test.HTM und streame mir den Inhalt.

Delphi-Quellcode:
 ...
if n = 'infourlthen
                            begin
                              PostDataStream := TStringStream.Create('');
                              ParamData := TStringStream.Create('');
                              ParamData.WriteString('');
                              ArtikelAdsTable.FieldByName('Infourl').AsString := s;
                              HtmlCodeIdHTTP.Post(s, ParamData, PostDataStream);
                              ArtikelAdsTable.FieldByName('Infotextalles').AsString := PostDataStream.DataString;
                              BodyJvRichEdit.Clear;
                              BodyJvRichEdit.Text := PostDataStream.DataString;
                              if Pos('<BODY>', BodyJvRichEdit.text) <> 0 then
                              begin
                                Start := Pos('<BODY>', BodyJvRichEdit.text)+7;
                                Ende := Pos('</BODY>', BodyJvRichEdit.text);
                                Body := Ende - Start;
                                bodytext := copy(BodyJvRichEdit.text, Pos('<BODY>', BodyJvRichEdit.Text)+6, Body+1);
                                ArtikelAdsTable.FieldByName('Infotextbody').AsString := bodytext;
                              end;
                              if Pos('<body>', BodyJvRichEdit.text) <> 0 then
                              begin
                                Start := Pos('<body>', BodyJvRichEdit.text)+7;
                                Ende := Pos('</body>', BodyJvRichEdit.text);
                                Body := Ende - Start;
                                bodytext := copy(BodyJvRichEdit.text, Pos('<body>', BodyJvRichEdit.text)+6, Body+1);
                                ArtikelAdsTable.FieldByName('Infotextbody').AsString := bodytext;
                              end;
                            end
...
Ist es nun verständlicher!?

P.S: Ich weiß man kann es sauberer lösen. Ich bin auch kein Crack, aber es erfüllt "eigentlich" seinen Zweck!

Geändert von golffahrer ( 5. Apr 2011 um 17:09 Uhr)
  Mit Zitat antworten Zitat