AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi XML.AddChild(): Probleme mit Sonderzeichen
Thema durchsuchen
Ansicht
Themen-Optionen

XML.AddChild(): Probleme mit Sonderzeichen

Ein Thema von Peter Müller · begonnen am 26. Okt 2014 · letzter Beitrag vom 6. Nov 2014
Antwort Antwort
Seite 2 von 2     12   
Dejan Vu
(Gast)

n/a Beiträge
 
#11

AW: XML.AddChild(): Probleme mit Sonderzeichen

  Alt 28. Okt 2014, 07:54
Ich weiß nicht, wie man genau in Delphi mit XPath arbeitet. Aber jedenfalls kannst Du damit bequem nach einzelnen oder allen Attributen und Knoten suchen. Google mal, sieht ziemlich einfach aus.

Geändert von Dejan Vu (28. Okt 2014 um 08:01 Uhr)
  Mit Zitat antworten Zitat
Peter Müller

Registriert seit: 15. Mär 2006
Ort: Stuttgart
22 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#12

AW: XML.AddChild(): Probleme mit Sonderzeichen

  Alt 5. Nov 2014, 17:53
Vielen Dank für die Antworten.

XML-Dateien habe ich im Prinzip schon verstanden, was mich halt stört ist, dass Node-Namen nur einen Teilbereich des Zeichensatzes verwenden können und ich daher einen Node-Namen ohne "brauchbaren" Inhalt und ein Attribut oder CDATA zusätzlich verwenden muss, was unnötig viel Platz braucht und die Übersichtlichkeit in der XML-Datei nicht gerade erhöht.

Aber dann ist das halt so...

Peter
"Der Erfolg besteht manchmal in der Kunst, das für sich zu behalten, was man nicht weiß." Sir Peter Ustinov
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: XML.AddChild(): Probleme mit Sonderzeichen

  Alt 5. Nov 2014, 18:26
XML-Dateien habe ich im Prinzip schon verstanden, was mich halt stört ist, dass Node-Namen nur einen Teilbereich des Zeichensatzes verwenden können und ich daher einen Node-Namen ohne "brauchbaren" Inhalt und ein Attribut
Dann hast du XML doch nicht genug verstanden.

Genau wie im Delphi (Variablen, Typen usw.) gibt es eben Regeln, wie ein "Bezeichner" lauten muß, bzw. was alles erlaubt/verboten ist
und da beschwert sich doch auch keiner, daß man nicht alles nehmen kann.
Diese Regeln sind dafür da, damit man den Code einfach und vorallem sicher parsen kann und damit er auch halbwegs lesbar bleibt.
> Buchstaben, Zahlen und viele weitere Zeichen sind erlaubt, aber vorallem Steuerzeichen und die Interpunktion sind eben verboten.
Das & ist in XML nunmal ein Steuerzeichen.

PS: In diesen Bezeichnern sind, je nach Encoding (z.B. bei UTF-8), locker weit über 30.000 Zeichen erlaubt (irgendwas zwischen 30000 und 50000) und nur weil du zufällig einen der wenigen "verbotenen" Zeichen erwischt hast, kann man nicht gleich sagen, daß man dort nichts "Brauchbares" benutzen kann.
Es sind nunmal Bezeichner und nicht irgendein beliebiger Text.

Und was den "vielen Platz" betrifft, das sind auch nur mindestens 2 (Nodename+Leerzeichen) bis vielleicht 20 Zeichen, die da in jedem Node mehr benötigt werden, was der Übersichtlichkeit eigentlich keinen großen Abbruch dieht.



Du kannst auch gern andere Formate verwenden, wie z.B. JSON, welche etwas kompakter sind, aber auch da ist in Bezeichnern nicht alles erlaubt und ob das insgesamt besser lesbar ist?

PS: Willst du wirklich die XML ständig manuell bearbeiten, oder warum stören dich die paar zusätzlichen Bytes?



TReader und TWriter sind noch kleiner, vorallem in der binären Darstellung. -> siehe die DFMs vom Delphi
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Nov 2014 um 18:38 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#14

AW: XML.AddChild(): Probleme mit Sonderzeichen

  Alt 6. Nov 2014, 07:56
Und vor allen Dingen kann man einer XML nicht beliebige Knotennamen verpassen, denn eine XML wird normalerweise auch einer Grammatik (XSD) genügen müssen. Wenn Du also z.B. eine Liste von Freunden hast, dann geht das nicht so:
Code:
<Klaus>
  <Geburtstag>1990-10-20</Geburtstag>
  <Trinkfest>Ja</Trinkfest>
</Klaus>
<Hotte>
  <Geburtstag>1979-07-01</Geburtstag>
  <Trinkfest>Nein</Trinkfest>
</Hotte>
Weil es ja mehrere Freunde mit Namen 'Klaus' geben könnte, sondern z.B. so
Code:
<Freunde>
  <Freund Name ="Klaus">
    <Geburtstag>1990-10-20</Geburtstag>
    <Trinkfest>Ja</Trinkfest>
  </Freund>
  <Freund Name ="Hotte">
    <Geburtstag>1979-07-01</Geburtstag>
    <Trinkfest>Nein</Trinkfest>
  </Freund>
</Freunde>
Mit der 2.Version kannst Du vorher schon genau festlegen, wie deine XML-Datei aussehen soll, bei der 1.Version müsstest Du das bei jeder Freundschaftsänderung anpassen, was ziemlich lästig ist.

Beides ist -für sich genommen- jedoch wohlgeformtes XML, trotzdem wirst Du immer etwas in der Art von #2 sehen.

Wenn Du Dir also ein XML-Format ausdenkst, um bestimmte Daten zu speichern, dann erstellst Du idealerweise dafür gleich die XSD, also die formale Definition des Formates. Das kannst Du dann deinen Kommunikationspartnern geben und es reicht dann, wenn die eine XML erstellen, die gegen die XSD erfolgreich geprüft werden kann. Dann kannst Du 100% sicher sein, das Du diese Daten auch verstehst. Extrem praktisch.

Geändert von Dejan Vu ( 6. Nov 2014 um 07:58 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:19 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