Thema: Delphi XML lesen

Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: XML lesen

  Alt 3. Mai 2021, 11:29
Eine Funktion, die JSON_OCLC heißt und dann XML verarbeitet ist auch so haarscharf an Mind-Explosion!

Warum nutzt du nicht den XML-Binding-Wizard?
In Delphi Sydney ein neues VCL-Projekt öffnen und dann nochmal über File | New | Other | Delphi | Web | XML Data Binding auswählen.
Dann dem Dialog eine Beispiel-XML vorwerfen.

Delphi-Quellcode:
uses
  works, Xml.XMLDoc;

const
    Dummy_String = '' +
    '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' +
    '<classify xmlns="http://classify.oclc.org">' +
    ' <response code="4"/>' +
    ' <!--Classify is a product of OCLC Online Computer Library Center: http://classify.oclc.org-->' +
    ' <workCount>5</workCount>' +
    ' <start>0</start>' +
    ' <maxRecs>25</maxRecs>' +
    ' <orderBy>thold desc</orderBy>' +
    ' <input type="title">Rabenpresse</input>' +
    ' <works>' +
    ' <work author="Liersch, Hendrik" hyr="2007" lyr="2007" title="Die fast vollständige Geschichte der Rabenpresse : aus Anlaß der Ausstellung im Foyer der Universitätsbibliothek" wi="175651286"/>' +
    ' <work author="Fuchs, Günter Bruno [Contributor; Editor]" hyr="1969" lyr="1968" title="Berlin-Buch der Neuen Rabenpresse : mit einem Calendarium auf das Jahr 1969" wi="43039960"/>' +
    ' <work author="Hantzsch, Friedrich Georg" editions="3" format="Book" holdings="3" hyr="2012" itemtype="itemtype-book" lyr="2012" owi="1203218774" schemes="LCC" title="Die Rabenpresse selig" wi="824666518"/>' +
    ' <work author="(Hrsg.), Hermann Schladt" hyr="2014" lyr="2014" title="Edition Rabenpresse 1: Romanzero" wi="943835587"/>' +
    ' <work editions="1" hyr="2007" lyr="2007" title="Die fast vollständige Geschichte der Rabenpresse : aus Anlass der Ausstellung "/>' +
    ' </works>' +
    '</classify>';

procedure TForm3.FormCreate(Sender: TObject);
var
  Classify: IXMLClassifyType;
  Works: IXMLWorksType;
  Work: IXMLWorkType;
  I: Integer;
begin
  Classify := Getclassify(Xml.XMLDoc.LoadXMLData(Dummy_String));

  Works := Classify.Works;

  for I := 0 to Works.Count - 1 do
  begin
    Work := Works.Work[I];
    ShowMessage(Work.Author);
  end;
end;
Angehängte Dateien
Dateityp: pas works.pas (13,4 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat