Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   TJvSimpleXML Probleme (https://www.delphipraxis.net/132304-tjvsimplexml-probleme.html)

Bauer007 9. Apr 2009 12:30


TJvSimpleXML Probleme
 
Moin Moin,

habe ein Problem mit der "TJvSimpleXML" komponente...


Delphi-Quellcode:
for i := 0 to FileList.Count - 1 do
      begin

      Dat_Data := Explode('|', FileList.Strings[i]);
     
        with XML_CREATE.Root.Items.add('meinegruppe') do
        begin
          Properties.Add('wert', data_file.ReadString('LISTE', Dat_Data[0], Dat_Data[1]));

        end;
      end;
Das funktioniert, doch mein Problem ist das bei den Properties(wert) Strings mit Sonderzeichen z.B.: ' in ' ausgegeben werden. DAS darf nicht! (egal ob Conform oder nicht)

Jemand eine Lösung?
oder eine andere "bessere" Komponente?

Bernhard Geyer 9. Apr 2009 12:32

Re: TJvSimpleXML Probleme
 
Was heißt ausgegeben? Falls du meinst das im XML dein Sondernzeichen XML-Konform vorliegt so muß/wird das jede vernünftige XML-Komponente machen. Ansonsten hast du kein XML und du mußt das alles selbst machen und hast damit ein properitäres Textformat. Oder hast du wohl eine Gegenstelle die solche fehlerhafte Daten zwingend benötigt?

Bauer007 9. Apr 2009 12:35

Re: TJvSimpleXML Probleme
 
Tja nun leider speichert vBulletin seine Daten nciht gerade nach Standard! Daher kann ich nicht aus der Reihe tanzen. Es geht um das ein/auslesen von Daten die in einem XML-File gespeichert sind....

Beispiel...

XML-Code:
<templategroup name="Who's Online">
<template name="WHOSONLINE" templatetype="template" date="0" username="0" version="0">
</template>
</templategroup>

himitsu 9. Apr 2009 12:36

Re: TJvSimpleXML Probleme
 
das MSXML-DOM macht es, wie gewünscht
> TXMLDocument (Units: XMLDOM, XMLIntf, XMLDoc)


Delphi-Quellcode:
Var X: TXMLDocument;

X := TXMLDocument.Create(Self);
X.Active    := True;
X.Version   := '1.0';
X.StandAlone := 'yes';
X.Encoding  := 'UTF-8';
X.Options   := [doNodeAutoIndent];
X.AddChild('xml');
X.DocumentElement.AddChild('Node').Text := '123''456';
X.DocumentElement.AddChild('Node').Attributes['attr'] := '123''456';
X.SaveToFile('test.xml');
X.Free;
XML-Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xml>
  <Node>123'456</Node>
  <Node attr="123'456"/>
</xml>
und wie es bei mir (Hier im Forum suchenhimXML) aussieht: aktuell würde es auch so behandelt (also ' bleibt ' )

himitsu 9. Apr 2009 12:53

Re: TJvSimpleXML Probleme
 
Zitat:

Zitat von Bauer007
Das funktioniert, doch mein Problem ist das bei den Properties(wert) Strings mit Sonderzeichen z.B.: ' in &apos; ausgegeben werden. DAS darf nicht! (egal ob Conform oder nicht)

Es ist nicht Konform, wenn ' maskiert wird :warn:

Dieses sollten eigentlich die am TJvSimpleXML ändern oder sie müßten zumindestens darauf hinweisen.

Laut der XML-Spezifikation dürfen/müssen "nur"
&quot; "
&amp; &
&lt; <
&gt; >
und sonst alles Andere nach &x...;


&apos; ist nichtmal in der Spec definiert. (weder XML 1.0, noch XML 1.1)

Bernhard Geyer 9. Apr 2009 13:00

Re: TJvSimpleXML Probleme
 
Zitat:

Zitat von himitsu
Es ist nicht Konform, wenn ' maskiert wird :warn:
...
&apos; ist nichtmal in der Spec definiert. (weder XML 1.0, noch XML 1.1)

Sicher? Nach FAQ: Verwendung von Zeichen-Entity-Referenzen und numerischen Zeichenreferenzen

Zitat:

Zu beachten ist dabei jedoch, dass &apos; zwar in XML definiert ist, nicht aber in HTML. Aus diesem Grund empfiehlt die XHTML-Spezifikation [im Anhang C.16], stattdessen ' zu verwenden, wenn der Text an ein Nutzerprogramm (Browser) geschickt wird, der diesen als HTML verarbeitet.

himitsu 9. Apr 2009 13:07

Re: TJvSimpleXML Probleme
 
ich werf mir wohl besser noch 'ne Ibu ein :wall:

hatte grad ausversehn nur den Ordner der MXSML-Specs durchsuchen lassen und $apos; nicht entsprechend gefunden.

OK: hier ist es doch zu finden
http://www.w3.org/TR/2006/REC-xml11-20060816/

aber es muß per Standard nicht umgewandelt werden, wenn es keine Probleme gibt.

Einziger Grunde, wo/warum es umgewandelt werden MUß ist, wenn die Attribute mit ' begrenzt sind und im Text ein ' vorkommt.

Bauer007 9. Apr 2009 13:08

Re: TJvSimpleXML Probleme
 
Ok habe ich eine Menge durch diesen mir peinlichen Fehler gelernt.
Aber habe das Problem beim Studieren der "JclSimpleXml.pas" gefunden. Da ich nicht mit der Komponente zur Designzeit arbeite sah ich nicht das diese eine Option hat, mit der man das Codieren ausschalten kann.

Somit habe ich das was ich wollte :-)

Danke Euch dennoch für Eure Mühen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz