AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML-Schema auswerten (Link)

Offene Frage von "NoGAD"
Ein Thema von NoGAD · begonnen am 21. Feb 2020 · letzter Beitrag vom 23. Feb 2020
Antwort Antwort
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
345 Beiträge
 
Delphi 10.4 Sydney
 
#1

XML-Schema auswerten (Link)

  Alt 21. Feb 2020, 08:04
Hallo,


ich habe ein XML-ähnliches Schema (https://www.googleapis.com/books/v1/...s?q=1696290007) und möchte dieses per Code analysieren.

Wichtig sind mir nur einige Werte.

Code:
 "items": [
  {
   "kind": "books#volume",
   "volumeInfo": {
    "title": "Schwungübungen Ab 5 Jahren",
    "subtitle": "Übungsheft Mit Schwungübungen Zur Erhöhung Der Konzentration, Augen-Hand-Koordination Und Feinmotorik. Ideale Vorbereitung Für Kindergarten Und Vorschule!",
    "authors": [
     "Laura Eichelberger"
    ],
    "publishedDate": "2019-09-28",
    "description": "Sie möchten die Konzentration Ihres Kindes fö ...
weiter unten gibt es dann noch interessante Werte, welche jedoch nicht immer vorhanden sind.

Code:
  "imageLinks": {
     "smallThumbnail": "http://books.google.com/books/content?id=DM1JygEACAAJ&printsec=frontcover&img=1&zoom=5&source=gbs_api",
     "thumbnail": "http://books.google.com/books/content?id=DM1JygEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api"
Das ganze ist eine ISBN-Abfrage. Google ist hier die Wahl, weil die meisten Bücher hinterlegt sind.



Meine Frage dazu lautet: Was ist das für ein Schema und gibt es eine einfache Möglichkeit, dieses zu interpretieren - ohne dass ich mit Pos nach Strings suchen muss?

Momentan lese ich das in ein TMemo ein, um damit herumzubasteln.

Danke und LG Mathias
Mathias
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.778 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: XML-Schema auswerten (Link)

  Alt 21. Feb 2020, 08:20
Das Format aus dem Link - sieht für mich nach json aus.
aus SO: https://stackoverflow.com/questions/...ring-in-delphi

Grüße
Klaus
Klaus

Geändert von Klaus01 (21. Feb 2020 um 08:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#3

AW: XML-Schema auswerten (Link)

  Alt 21. Feb 2020, 09:09
Je nach Delphi-Version kannst Du das mit REST.Json, System.Json oder externen Libs wie SuperObject auswerten.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: XML-Schema auswerten (Link)

  Alt 21. Feb 2020, 09:23
Das Format scheint hier beschrieben zu sein.
https://schema.org/Book

Google bietet ja offenbar eine Api dazu.

Gute Datenbanksysteme erlauben die Abfrage von JSON wie diesem oben unabhängig von individuellen Ausprägungen per SQL.
Dabei kannst Du innerhalb SQL auch gleich Existenz-Prüfungen für Objekte nutzen und so wirklich fehlerfrei Daten abfragen, die vorhanden sind und Dich interessieren.

P.S.: Objekte und Arrays kannst Du damit nahezu beliebig zerlegen und transformieren.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
345 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: XML-Schema auswerten (Link)

  Alt 21. Feb 2020, 09:29
Das Array habe ich gefunden.

Code:
  var
    JSonValue : TJSonValue;
    Authors : TJSONArray;
    Items : string;
    i : Integer;
  begin

    Memo2.Clear;
    JSonValue := TJSonObject.ParseJSONValue( Memo1.Text );
    Items := JSonValue.GetValue< string >( 'items[0].volumeInfo.title' );
    Memo2.Lines.Add( Items );
    Authors := JSonValue.GetValue< TJSONArray >( 'items[0].volumeInfo.authors' );
    for i := 0 to Authors.Size - 1 do
      Memo2.Lines.Add( Authors.Get( i ).Value );
    Items := JSonValue.GetValue< string >( 'items[0].volumeInfo.publishedDate' );
    Memo2.Lines.Add( Items );

    JSonValue.Free;
Damit klappt es.

@jobo: ich gucke es mir an
Mathias
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: XML-Schema auswerten (Link)

  Alt 22. Feb 2020, 11:30
@jobo: ich gucke es mir an
Ich hab Dir ein Beispiel gebaut, das zeigt, was geht bzw. was ich meine. Ist natürlich nicht vollständig und vielleicht nicht anwendbar für Dich, aber einfach sehr bequem (und erprobt).
https://rextester.com/discussion/YNM...json-operators
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
345 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: XML-Schema auswerten (Link)

  Alt 21. Feb 2020, 09:19
Danke. Der Link von Klaus hat sehr weitergeholfen.


Code:
JsonValue.GetValue<string>
Die Art der Typdeklaration kenne ich nicht. (<string>)
Wie sah das früher für diesen Fall aus, bevor es diese Art der Zuweisung gab?

Und eine zweite Frage.

Ein Problem mit Arrays habe ich noch. Der JSON Node für diverse Items könnte ein Array sei, so wie es bei Authors ist. Wäre es da nicht gleich einfacher, ich würde generell alle Werte in ein Array einlesen und dieses dann auswerten, auch wenn es nur ein einzelner String ist (wie bei title)?

Doch wie kann ich das Array direkt einlesen - Array of String funktioniert nicht bei der Typdeklaration.


Mein Code sieht nun für Tests wie folgt aus.

Code:
  var
    JSonValue : TJSonValue;
    items : string;
    Authors: TStrings;
  begin

    Memo2.Clear;
    JSonValue := TJSonObject.ParseJSONValue( Memo1.Text );
    items := JSonValue.GetValue< string >( 'items[0].volumeInfo.title' );
    Memo2.Lines.Add( items );
    Authors := JSonValue.GetValue< TStrings >( 'items[0].volumeInfo.authors' );
    Memo2.Lines.AddStrings( Authors );
    items := JSonValue.GetValue< string >( 'items[0].volumeInfo.publishedDate' );
    Memo2.Lines.Add( items );

    JSonValue.Free;
  end;
In der Zeile Authors := erfolgt eine Exception bezüglich Typumwandlung.
Mathias
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz