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 13 von 26   « Erste     3111213 141523     Letzte »    
Benutzerbild von himitsu
himitsu
Online

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

Re: himXML (gesprochen himix ML)

  Alt 30. Jun 2009, 11:43
joar, könnte man ... ich bastle eh ständig noch etwas an schöneren und "verständlicheren" Exceptions rum
(anfangs hießen alle noch 'Fehler' und man wußte nicht aus welcher Funktion sie kommen )

PS:
Delphi-Quellcode:
TWH.XML.Node['EDDH\2009\Juni\30'].Attribute['haha'] := 'Putzilein';
// bsw.
TWH.XML.Attribute['EDDH\2009\Juni\30\haha'] := 'Putzilein';
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Zwoetzen

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

Re: himXML (gesprochen himix ML)

  Alt 30. Jun 2009, 11:48
Die besten Fehler sind doch sowieso:

---------------------------
Project1
---------------------------
Es ist ein Fehler aufgetreten
---------------------------
OK Abbrechen
---------------------------

  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: himXML (gesprochen himix ML)

  Alt 30. Jun 2009, 12:36
Zitat von Zwoetzen:
---------------------------
Project1
---------------------------
Es ist ein Fehler aufgetreten
---------------------------
OK Abbrechen
---------------------------
also das ist definitiv keine meiner Exceptions ... kann mich jedenfalls nicht erinnern irgendwo sowas noch verbaut zu haben.

außerdem sollten alle meine selbstausgelösten Exceptions mindestens den Namen der Funktion enthalten, worin diese erzeugt wurde.

[edit] und selbst in den Delphi-Sourcen konnte ich soeine Meldung nicht finden ... könnte also vermutlich eine Windows-Meldung sein
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Zwoetzen

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

Re: himXML (gesprochen himix ML)

  Alt 30. Jun 2009, 13:44
Das war nicht auf himiXML bezogen, sondern allgemein auf Programme, wo man sowas ab und zu mal zu gesicht bekommt

(Sorry, falls das nicht direkt klar rübergekommen ist )
  Mit Zitat antworten Zitat
Zwoetzen

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

Re: himXML (gesprochen himix ML)

  Alt 6. Jul 2009, 19:25
Hmm wollte jetzt mal ein wenig mit himXML arbeiten, doch bekomme ich beim Versuch einen XML-String zu setzen nur ein
Zitat von himXML:
EXMLException (TXMLFile.ReadData):
invalid file encoding.
Ich vermute, dass es da einfach Probleme mit den verschiedenen String-Typen gibt, nur kenn ich mich da nicht sonderlich gut aus ^^
Könntest du mir sagen, wie es richtig heißen muss? Momentan verwende ich (aufs Problem angepasst):
Delphi-Quellcode:
var
  XML: TXMLFile;
begin
  XML := TXMLFile.Create;
  try
    //XML.asXML := FContent;
    XML.asXML := '<root>â</root>'; // <-- Hier macht es Bumm
  finally
    XML.Free;
  end;
end;
Wie gesagt, ich denke, es wird an der (impliziten) Umwandlung String -> AnsiString liegen, habe auch schon bissl probiert, aber mangels Wissen war ich nicht wirklich erfolgreich.

Würde mich freuen, wenn du mir helfen kannst

MfG Zwoetzen


PS: Habe auch nen Tippfehler in einer Fehlermeldung entdeckt:
Zitat von himXML:
EXMLException (TXMLNodeList.Add):
text node can't constain subnodes.
Ich denke das s in "constain" ist zu viel (wollte dich nur mal drauf hinweisen auch wenn die Fehler wohl nochmal geändert werden )
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#6

Re: himXML (gesprochen himix ML)

  Alt 6. Jul 2009, 20:19
Ist ja auch kein vollständiges XML, sowas würde gehen:
XML.asXML := '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><root>â</root>'; oder
Delphi-Quellcode:
XML := TXMLfile.Create(self, 'root');
XML.RootNode.Text := 'â';
€: hast soweit recht, dass das Zeichen â scheinbar (bei asXML) für Verwirrung sorgt. Konnte jetzt auch nicht ermitteln, unter welcher Zeichencodierung das auch so in der Datei steht und damit eine gültige XML-Struktur wäre.

Das funktioniert auch nicht, sollte es aber, da das eine gültiges XML ist
XML.asXML := '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?><root>â</root>'; Sieht so aus, als ob asXML an der UTF-8 Kodierung festhält
  Mit Zitat antworten Zitat
Zwoetzen

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

Re: himXML (gesprochen himix ML)

  Alt 6. Jul 2009, 21:27
Danke für deine Antwort

Die erste Variante ändert nix: Selbst mit ordentlichem XML-Header kommt der Encoding-Fehler.

Der zweite Vorschlag bringt etwas Besserung, allerdings erhalte ich später dann die Meldung
Zitat von himXML:
EXMLException (TXMLNodeList.Add):
text node can't constain subnodes.
wenn ich versuche, auf einen Knoten zuzugreifen.
Ich denke es hängt damit zusammen, das himXML bei der Zuweisung an .TExt davon ausgeht, dass es wirklich nur Text ist, und somit diesen nicht weiter parst.

Ich habe auch probiert, statts .Text das .XMLText zum zuweisen zu verwenden, doch dann bekomme ich den Fehler
Zitat von himXML:
EXMLException (TXMLFile.ParsingTree):
unexcepting end of data - not all opened tags are closed

error at byte position 11.498 ("#000D#000A " on line 75)
wobei der zugewiesene String wohlgeformtes XML ist.



Als Information:
Die Quelldaten habe ich mit zuvor als XHTML-Datei aus dem Internet geladen, und bereits das genauer zu analysierende <div> extrahiert. Das heißt ich habe ein <div> als Wurzelknoten im String, was dann natürlich alles mögliche noch enthält. Der extrahierte Code ist dabei gültiges XHTML, sollte also keine Probleme geben.
Das Dokument liegt dabei als UTF-8 vor, und ich lade es mittels IdHTTP.Get in einen String. Nach ein paar String-Operationen (Extrahieren des gewünschten divs) will ich diesen nun als XML interpretieren lassen um ihn weiter analysieren zu können (wird sonst mot Pos/PosEx etwas mühselig ^^).


(Btw: Habe ich schon erwähnt, dass ich Delphi2009 unter Windows7 verwende? Keine Ahnung, ob das irgendwie Auswirkungen hat, Delphi2009 wird laut erstem Post auf jeden Fall unterstützt, Windows7 laut Seite 5 des Threads oder so auch.)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: himXML (gesprochen himix ML)

  Alt 7. Jul 2009, 08:48
Unter Delphi2009 wird es hauptsächlich entwickelt und dann abund zu mal in TDE und D7 getestet
und Windows (auch Windows 7) hat eigentlich nur einen Einfluß auf die caseinsensitiven Namensvergleiche und wa wurd ja vor Kurzem alles an Win7 angepaßt und nun auch eine Notfallalternative implementiert,
also da sollte es zumindestens keine Probleme mehr geben ... es hängt also nur noch von der Delphiversion ab.

<root>â</root> ist insofern eine ungültige Codierung, da XML ohne Angabe einer Codierung standardmäßig UTF-8 ist.

Node.Text nimmt nur "Text" entgegen, welcher in dem Node gespeichert wird, ansonsten gibt es noch Node.XMLText, welches eine XML-Struktur entgegennehmen würde (ähnlich zu Document.asXML).

Document.asXML wird nur an LoadFromXML/SaveToXML weitergeleitet und sollte eigentlich auch andere Codierungen verstehen können.

Wegen dem Rest muß ich dann mal in Ruhe schauen (hab hier grad kein Delphi und auch etwas wenig Zeit)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Zwoetzen

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

Re: himXML (gesprochen himix ML)

  Alt 7. Jul 2009, 14:43
Danke für deine Antwort.
Nehm dir ruhig die Zeit, die du brauchst, vorrübergehend arbeite ich mit einer "korrigierten" Version der XHTML-Datei, wo ich die ganzen Sonderzeichen korrigiert habe, sodass die Datei problemlos eingelesen kann und ich die Auswertung schonmal programmieren kann



Allerdings bin ich da schon auf einen nächsten Fehler gestoßen:

Test-Prozedur:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
const
  S: String = '<root>Some Text<child>Ding</child>Something else</root>'; // <-- Sollte gültiges XML sein
var
  XML: TXMLFile;
begin
  XML := TXMLFile.Create;
  try
    XML.asXML := S;
    ShowMessage(XML.RootNode.XMLText);
  finally
    XML.Free;
  end;
end;
Normalerweise würde man davon ausgehen, dass man nun als Ausgabe genau den Teil zwischen den <root>-Tags bekommt, allerdings erscheint:

Zitat von ShowMessage:
Some Tex
<child>Ding</child>
Something els
Das bedeutet, dass sowohl das letzte Zeichen vor dem öffnenden <child> als auch vor dem schließenden </root> fehlt. Habe es mit verschiedenen Werten probiert, es scheint immer genau ein Zeichen zu fehlen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: himXML (gesprochen himix ML)

  Alt 7. Jul 2009, 16:29
Also das asXML bzw. XMLText nimmt wirklich keine anderen Kodierungen an, da hab ich wohl etwas "falsch" bedacht, wird mit dem nächsten Update geändert.
(nur das dauert noch etwas, da sich grad einiges ändert und noch nicht alles fertig ist)

Du könntest aber deinen Text in einen Stream und das XML dann von dort laden.

in etwa so:
Delphi-Quellcode:
var MS: TMemoryStream;
  Text: AnsiString;

MS := TMemoryStream.Create;
MS.WriteBuffer(Text[1], Length(Text));
MS.Position := 0;
XML.LoadFromStream(MS);
MS.Free;

Zitat:
<root>Some Text<child>Ding</child>Something else</root>
Ist kein valides XML ... dieses ist nur eine "Untat", welche aus HTML bekannt ist.
Ein Knoten enthält entweder Unterknoten oder Text,
aber ich eigentlich sollte sowas schon möglich sein, da über die Option xoAllowUnknownText (standardmäig gesetzt), bei derartigem Text-Knoten-Mischmasch der Text jeweils in Unterknoten vom Typ xtUnknown ausgelagert werden sollte,
allerding klappt das nicht unter allen Umständen.
Mein letzter Versuch verlief da nicht so gut > http://www.delphipraxis.net/internal...042683#1042683 ,
wobei HTML selber ja kaum noch ein valides XML darstellt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 13 von 26   « Erste     3111213 141523     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:44 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