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 23 von 26   « Erste     13212223 2425     Letzte »    
Benutzerbild von himitsu
himitsu

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

Re: himXML (gesprochen himix ML)

  Alt 4. Jan 2010, 21:29
Zitat von NamenLozer:
Bei CSV fehlen solche Meta-Informationen,
Und da hat man wieder ein/das Problem:

CSV besteht erstmal nur aus namenlosen Spalten
> füge irgendwo mal eine Spalte ein oder laß eine weg ... schon geht nix mehr
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#2

Re: himXML (gesprochen himix ML)

  Alt 12. Jan 2010, 09:44
Hihu,
ich teste gerade selbst einige XML Parser, da der von MS wirklich nicht der schnellste ist. Ich glaube dein Parser hat einen Bug:

XML:
Code:
<test>
  <R A="X">X</R>
</test>

jetzt will ich das Attribut auslesen:

Delphi-Quellcode:
    txt := Xml.RootNode.Node['R'].Attributes.Name[0]; // A -> Richtig
    txt := Xml.RootNode.Node['R'].Attributes.Value[0]; // 00:00:00 -> sollte aber X sein
Außerdem:
Ist es richtig, dass man mit

  Xml.RootNode.Node['R'].Attributes.ValueCS['A'] direkt auf das Attribut per Name zugreifen kann? Muetzes Funktion "AttributeByName" (oder bei dir entsprechend ValueByName) wäre mir jedenfalls aussagekräftiger.
Edit: hab gesehen geht auch über Value

Falls Muetze es mitliest: Kann ich deine XML-Lib in der Firma verwenden (bisher nur intern für nen XML-Testprogramm, eventl. später kommerziell?)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: himXML (gesprochen himix ML)

  Alt 12. Jan 2010, 10:06
Zitat:
Xml.RootNode.Node['R'].Attributes.ValueCS['A']
Delphi-Quellcode:
Xml.RootNode.Node['R'].Attributes.Value['A']
Xml.RootNode['R'].Attributes['A'] // .Node und .Value sind ja DEFAULT
Xml.RootNode['R'].Attribute['A'] // gibt aber auch 'ne Weiterleitung,
Xml.Attribute['R\A'] // welche auch im Dokumentelement verbaut wurde und sogar Pfade mag
Value, welches auch das defaultporperty ist, ist das Richtige und dort kann man entweder einen Index (Integer) oder einen Namen (String) angeben ... hab keine Extrafunktionen für "ByName" angelegt.

Das ValueCS ist nur 'ne Zusatzfunktion (standardmäßig wir alles CaseInsensitiv betrieben, aber man kann dieses ja über die Optionen umstellen ... nja und wenn es auf CaseSensitiv umgestellt ist, dann arbeiten die paar CS-Funktionen dennoch CaseInsensitiv)


@Muetzes Lib: soweit ich weiß darfst du daß ... nur solltest du dich vorher einfach mal bei ihm melden ( http://muetze1.de ) und ihn um Erlaubnis fragen ... er wird auch bestimmt ja sagen
PS: da ist seit gestern ein "netter" Bug in seiner Lib behoben wurden (also besser von seiner Seite mal updaten)


Delphi-Quellcode:
<test>
  <R A="X">X</R>
</test>
wegen dem werd ich mal schauen
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: himXML (gesprochen himix ML)

  Alt 12. Jan 2010, 10:54
der "X"-Fehler wurde entdeckt:

Hatte für die Kompatibilität zu älteren Delphis eine eigene Trim-Funktion verbaut, welche etwas falsch verglich und Strings aus nur einem Zeichen zu einem Leerstring machte.
( kleines < statt einem <= mit großer Wirkung )
Und dazu kam dann noch ein etwas übereifriges isXMLDateTime, welches Leerstrings als Zeitstring erkannte.
Das 00:00:00 war praktisch ein TDateTime mit dem Wert 0, welcher sich im Variant versteckte.



Und Muetze1s neuste gebugfixte Version wurde auch gleich mit eingefügt.

der Download versteckt in Post #1
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#5

Re: himXML (gesprochen himix ML)

  Alt 12. Jan 2010, 12:52
So ich hab auch nochmal ein paar Tests für meine Anforderungen gemacht:

~980MB auf 76 Dateien:

JediSimple: ~185 Sekunden
Muetze1: ~130 Sekunden
himXML: ~250 Sekunden
MS: ~730 Sekunden

Ich greife dabei nur lesen auf die Daten zu. (Prüfung der Eingangsdaten auf fehlende Einträge)
Sowohl Input als auch Output werden in anderen DOM-Parsern weiterverwendet. (daher reicht mir erstmal DOM, es sei denn SAX wäre noch schneller)

Irgendwelche Tips wie ich das schneller bekomme?

(PS: mit Pos dauter es ~ 20 Sekunden)
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#6

Re: himXML (gesprochen himix ML)

  Alt 20. Jan 2010, 11:28
Zitat von brechi:
(daher reicht mir erstmal DOM, es sei denn SAX wäre noch schneller)
1 GB an Daten? *rechne* Bei 76 Dateien würde das ja durchschnittlich 12.5 MB pro Datei bedeuten. Ich denke, mit'm SAX-Parser wärst du hier vielleicht besser bedient, zumindest sollte man es mal probieren.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: himXML (gesprochen himix ML)

  Alt 20. Jan 2010, 11:40
Zitat von Daniel G:
1 GB an Daten? *rechne* Bei 76 Dateien würde das ja durchschnittlich 12.5 MB pro Datei bedeuten.
Och, beim MSXML-DOM werden das wohl auch nicht mehr als 100-150 MB pro Datei im Arbeitsspeicher sein.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Zwoetzen

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

Re: himXML (gesprochen himix ML)

  Alt 4. Feb 2010, 21:34
Nachdem mein aktuelles Projekt ein ganzes Stück vorangekommen ist, habe ich nun die nächste Frage zur XML-Verarbeitung.

Mein Problem ist, dass ich alle Kinder eines Knotens durchlaufen will, wobei die Namen der Kinder unbekannt sind. Wie stelle ich das am einfachsten an?

Bisher habe ich immer folgende Variante genutzt:
Delphi-Quellcode:
var
  Node, N: TXMLNode;
begin
  // Node ist der Knoten, dessen Kinder untersucht werden sollen
  for N in Node.NodeList['code'] do
    ShowMessage(N.Name + N.Text); // Irgendwas mit N anstellen
end;
Damit werden logischerweise nur alle Tags mit dem Namen "code" durchlaufen (was bisher auch immer so gewünscht war), nur irgendwie sehe ich gerade keine Möglichkeit, dass ich alle Knoten erwische. Dabei würde ich gerne die for-in-Schleife behalten bzw. eine ähnlich einfache/kurze Alternative nutzen wollen.

Vielleicht sehe ich auch nur den Wald vor lauter Bäumen nicht mehr, wird langsam spät


MfG Zwoetzen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: himXML (gesprochen himix ML)

  Alt 5. Feb 2010, 07:47
Da ich selber keine Enumeratoren implementiert hab, welche für das For-In nötig sind,
es aber netter Weise einen für dynamische Arrays gibt, geht es nur über NodeList, welches ja soein Array liefert.

Nun kannst du auch überall NodeNamen genauso behandeln, wie z.B. Dateinamen bei FindFirst ( * und ? ).
Also Folgendes würde dann alle Nodes durchgehn.
for N in Node.NodeList['*'] do (abgesehn derer Node-Typen, welche über XML.Options versteckt wurden)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: himXML (gesprochen himix ML)

  Alt 5. Feb 2010, 07:50
Mal was anderes, was eventuell nicht direkt mit dem Code zu tun hat. Aber das stört mich schon,m seit du die Bibliothek hier veröffentlicht hast: Der Name. Wenn man dazu schreiben muss, wie der Name ausgesprochen wird, ist es ein schlechter Name. Ein besserer Name wäre sicherlich der Verbreitung nur förderlich.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 23 von 26   « Erste     13212223 2425     Letzte »    


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 01:53 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