AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte himXML (gesprochen himix ML)
Thema durchsuchen
Ansicht
Themen-Optionen

himXML (gesprochen himix ML)

Ein Thema von himitsu · begonnen am 12. Mär 2009 · letzter Beitrag vom 11. Nov 2020
Antwort Antwort
Seite 25 von 26   « Erste     15232425 26      
Zwoetzen

Registriert seit: 19. Sep 2007
Ort: Ilmenau
93 Beiträge
 
Delphi 2009 Professional
 
#1

Re: himXML (gesprochen himix ML)

  Alt 15. Apr 2010, 15:39
Nagut, dann bleib ich erstmal bei den Schleifen.

Auf Seite 12 unten klang es so, als seien diese Funktionen schon fertig, und entsprechend war ich vom Ergebnis etwas verunsichert.

Danke für die schnelle Auskunft
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#2

Re: himXML (gesprochen himix ML)

  Alt 2. Mai 2010, 20:00
Ich versuche erfolglos folgende XML-Datei zu laden (nur der relevante Anfang:
XML-Code:
  <?xml version="1.0" ?>
 <ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2009-07-01">
 <OperationRequest>
  <RequestId>147c6ffa-697d-4a9b-86e0-2c9216c2cd60</RequestId>
 <Arguments>
  <Argument Name="Operation" Value="ItemSearch" />
  <Argument Name="Service" Value="AWSECommerceService" />
  <Argument Name="Signature" Value="uXLTuuePbsbl977Rcz+6TNyq3ihx3J52+KN6jt4DlSA=" />
  <Argument Name="ItemPage" Value="1" />
  <Argument Name="AssociateTag" Value="bla" />
  <Argument Name="Version" Value="2009-07-18" />
  <Argument Name="Keywords" Value="Matrix" />
  <Argument Name="AWSAccessKeyId" Value="KEY" />
  <Argument Name="Timestamp" Value="2010-05-02T18:52:50Z" />
  <Argument Name="ResponseGroup" Value="Large" />
  <Argument Name="SearchIndex" Value="DVD" />
  </Arguments>
  <RequestProcessingTime>0.1835730000000000</RequestProcessingTime>
  </OperationRequest>
 <Items>
 <Request>
  <IsValid>True</IsValid>
 <ItemSearchRequest>
  <Condition>New</Condition>
  <DeliveryMethod>Ship</DeliveryMethod>
  <ItemPage>1</ItemPage>
  <Keywords>Matrix</Keywords>
  <MerchantId>Amazon</MerchantId>
  <ResponseGroup>Large</ResponseGroup>
  <ReviewSort>-SubmissionDate</ReviewSort>
  <SearchIndex>DVD</SearchIndex>
  </ItemSearchRequest>
  </Request>
  <TotalResults>130</TotalResults>
  <TotalPages>13</TotalPages>
 <Item>
  <ASIN>B001G5HB2I</ASIN>
  <DetailPageURL>http://www.amazon.de/Matrix-Complete-Trilogy-Keanu-Reeves/dp/B001G5HB2I%3FSubscriptionId%3D1HDS51J6EDYSCKF0YJ82%26tag%3Dtastenhacker-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB001G5HB2I</DetailPageURL>
  </Item>
 </Items>
</ItemSearchResponse>
usw.

Mein Code sieht so aus:
Delphi-Quellcode:
procedure Parse(ResponseXML: string);
var
  XML: TXMLFile;
  I: integer;
  Movie: TMovie;
  PicURL: string;
begin
  XML := TXMLFile.Create();
  try
    ClearMovies();
    XML.LoadFromXML(ResponseXML);
    with XML.Node['ItemSearchResponse'].Node['Items'] do
    begin
      Self.TotalResults := Node['TotalResults'].Text;
      Self.TotalPages := Node['TotalPages'].Text;
      for I := 0 to Nodes.Count - 1 do
      begin
        if Nodes[i].Name = 'Itemthen
        begin
         // Mach was mit Item
        end;
      end;
    end;
  finally
    XML.Free;
  end;
end;
Ich bekomme aber für TotalResults und TotalPages immer eine 0. Wo liegt mein Problem?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.355 Beiträge
 
Delphi 12 Athens
 
#3

Re: himXML (gesprochen himix ML)

  Alt 2. Mai 2010, 20:22
XML.Node['...'] entspricht with XML.RootNode.Node['...'] do

versucht mal statt
with XML.Node['ItemSearchResponse'].Node['Items'] do einfach nur
with XML.Node['Items'] do
PS: Zum Test kannst du auch mal das standardmäßig gesetzte xoNodeAutoCreate aus den Options entfernen, dann sollte es eine Exception geben, weil ja auf einen nicht existierenden Node zugegriffen wird.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#4

Re: himXML (gesprochen himix ML)

  Alt 10. Mai 2010, 15:29
hey himitsu, bin nun nach langem hin und her (vor allem wegen Threadsicherheit) von der MSXML auf deine Klasse umgestiegen.

Da ist mir doch gleich ein Fehler aufgefallen (v0.99d Beta 12.01.2010). Wenn ich den Wert einen Checkbox oder allgemeiner einen Boolean-Wert abspeichere, erwarte ich, dass True/False geschrieben wird. Deine Klasse schreibt bei Wahr jedoch $FFFF. Hab den Fehler mittels BoolToStr erstmal umgehen können.

Ansonsten Top Arbeit

Beispiel:
<TXMLFile>.Nodes['xml'].Nodes['testwert'].Text := True;
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.355 Beiträge
 
Delphi 12 Athens
 
#5

Re: himXML (gesprochen himix ML)

  Alt 10. Mai 2010, 19:00
Threadsicher ist meine Klasse aber auch nicht ... jedenfalls sollte man nicht von mehreren Threads aus den selben Node, bzw. die selbe NodeListe bearbeiten/ändern.
(diesbezüglich wird sich aber in der nächsten Version sehr viel ändern, vorallem da ich jetzt endlich eine gute Möglichkeit für die Nutzung von Interfaces gefunden hab ... hatte ja enorme Probleme mit Kreuzreferenzen und dudurch selbsthaltenden Datenstrukturen )

In der nächsten Version und wenn ich meine RexEx-Klasse (ePCRE) fertig hab, wird es wohl auch endlich XPath geben.



Hhhhh, das nut den Boolean muß ich wohl nochmal nachsehn, der Grund hiefrür ist erstmal, daß in einem Variant nicht das 1-Byte-kleine Boolean, sondern das 2-Byte WordBool Verwendung findet.
Boolean: True = 1
WordBool: True = -1 aka $FFFF

Aber eigentlich dachte ich, ich hätte dieses entsprechend beachtet.
Intern ist jedenfalls eine eigene Version von BoolToStr verbaut.
Denn der Hauptgrund für den Nummerischen Wert ist, daß ich keine SubWerte vernichten wollte
und es somit auch einen nummerischen Modus gibt, neben den TRUE- und FALSE-Ausdrücken für -1 und 0.
> Ein Boolean, ByteBool, WordBool oder LongBool kennt nunmal nicht nur True und False, sondern noch viel mehr.
PS: Das ist auch der Grund, warum man bei Abfragen nicht mit =True vergleichen darf.
Aber wir gesagt, eigentlich sollte bei diesem $FFFF in der Datei TRUE drinstehn ... ich werd' es mir also nochmal ansehn.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
BlueStarHH
Online

Registriert seit: 28. Mär 2005
Ort: Hamburg
860 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: himXML (gesprochen himix ML)

  Alt 18. Jun 2010, 07:56
Hallo himitsu,

erstmal vielen Dank für Deine erstklassige Arbeit! Mir gefällt die himXML sehr gut!

Zu meiner Frage: Ich möchte GUI-Komponenten als XML speichern und wieder laden. Also aus der XML wieder eine GUI erstellen. Das wollte ich mit TXMLNode.Serialize() machen, doch dann kommt einen Exception, die sagt dass es noch nicht implementiert ist. Schaut man in den Quellcode ist dort jedoch schon Code zu finden. Der ist jedoch noch nicht fertig und funktioniert noch nicht richtig? Oder wie soll man das verstehen? Was fehlt denn noch? Wie aufwändig wird es, das fehlende noch zu implementieren? Gibt es zeitliche Planungen für die Fertigstellung?

PS: Welche von den beiden Archiven (himxml_246.7z, himxml_164.7z) ist die aktuelle Version? Man könnte meinen das wäre die himxml_246 weil 246 für 2.46 steht. Schaut man aber in die Archive rein, sind die neueren Dateien in 164 zu finden. Nach welchem Muster vergibst Du da die Versionsnummern?

Gruß
BlueStar
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.355 Beiträge
 
Delphi 12 Athens
 
#7

AW: himXML (gesprochen himix ML)

  Alt 18. Jun 2010, 09:34
Ja, mit diesem (De)Serialize gibt/gab es noch einige Problemchen

Diese Nummern in den Anhängen haben nichts zu sagen.
Dieses stammen von der internen Verwaltung des alten Forums.
- beide Dateien hießen himXML.7z und die Version war in den nun ebenfalls fehlenden Kommentaren aufgeführt.
Das Aktuellere ist aber zufälliger Weise das mit der größeren Zahl (glaub ich).

Was die Fertigstellung angeht:
Bin grad/immernoch an einem anderem Projekt dran, welcher in der nächste himXML-Version verwendet werden soll.

Eigentlich dachte ich irgendwo im Forum würde eine halbwegs funktioniere ältere Version der Objektserialisierung rumliegen, wenn ich nur wüßte wo ... hatte dazu mal 'nen Thread aufgemacht, wegen einiger Fragen zur Umsetzung.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.167 Beiträge
 
Delphi 10 Seattle Professional
 
#8

AW: himXML (gesprochen himix ML)

  Alt 20. Jul 2012, 17:22
Habe folgendes Problem:
Ich bekomme über einen Webservice XML-Daten geleifert. Eine Attribute enthält Datum im Format "2012-07-20T00-00-00.000" (als Beispiel). Ich lese diese Attribute in einen String, den ich dann direkt mit StrToDate in ein Datum unmwandelt kann. Normalerweise lässt sich der o.g. Beispielstring nicht direkt mit StrToDate in ein Datum umwandeln, weil es an sich kein akzeptables Datumsformat ist, aber in diesem Fall klappt es. Vermutlich erkennt der Autor ein Datum dahinter und wandelt es direkt um.

Sollte aber der Wert der Attribute ein ungültiges Datum enthalten, z.B. "0001-01-01T00-00-00.000", bekomme ich schon beim auslesen der Attribute in einen String die Fehlermeldung "Ungültiges Argument". Als Datum mag es vielleicht ungültig sein, aber als String sollte doch keine Probleme geben, oder?

Was mache ich falsch?

Geändert von romber (20. Jul 2012 um 23:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.355 Beiträge
 
Delphi 12 Athens
 
#9

AW: himXML (gesprochen himix ML)

  Alt 20. Jul 2012, 22:47
Wenn du einen Node über .Text (Variant) ausließt, dann wird erkannt, daß es sich um das Standard-XML-DateTime-Format handelt, welches entsprechend in einen TDateTime umgewandelt wird.
Beim Auslesen von .Text wird der enthaltene Wert an die Delphi-Typen/Formate angepaßt, damit spätere Umwandlungen (welche aktuell noch über die Standardfunktionen des Variants behandelt werden) korrekt arbeiten.
Man kann .Text (Variant) ja direkt an eine TDateTime-Variable, bzw. an einen solches Property oder einen Parameter übergeben, wenn ein derartig kodierter DateTime-String oder eine Fließkommazahl enthalten ist.

Verwende stattdessen .Text_S (String), wenn du den Wert ohne Umwandlung auslesen willst/mußt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.167 Beiträge
 
Delphi 10 Seattle Professional
 
#10

AW: himXML (gesprochen himix ML)

  Alt 20. Jul 2012, 23:05
Bei einer Node ist klar. Es geht mir aber um eine Attribute. Soweit ich nichts übersehen habe, lässt sich eine Attribute nur über .Attribute[<name>] bzw. .Attributes.Value[<index>] auslesen und in beiden Fällen ist Variant der Ausgabetyp.

Geändert von romber (21. Jul 2012 um 00:36 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 25 von 26   « Erste     15232425 26      


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:

(?)

LinkBack to this Thread

Erstellt von For Type Datum
xml - MSXML alternative - Stack Overflow This thread Refback 28. Jun 2011 15:34

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 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-2025 by Thomas Breitkreuz