AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Leerzeichen im string Attribute in XML Datei schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Leerzeichen im string Attribute in XML Datei schreiben

Ein Thema von Boro · begonnen am 27. Aug 2009 · letzter Beitrag vom 30. Aug 2009
Antwort Antwort
Seite 2 von 2     12   
Boro

Registriert seit: 2. Mai 2006
23 Beiträge
 
#11

Re: Leerzeichen im string Attribute in XML Datei schreiben

  Alt 29. Aug 2009, 23:03
Zitat von himitsu:
aber es gibt für Text diese Möglichkeiten
XML-Code:
<node attr="text" />
<node>text</node>
<node><[CDATA[text]]></node>
wobei man in CDATA die wenigsten Beschränkungen hat und auch keine Normalisierung durchgeführt wird

<[CDATA[text]]> könnte man via .CreateNode und als NodeType ntCData erstellen
aber eventuell gibt es auch eine Vaiante, womit man einem "normalem" Node sagt, daß dessen "Text" in einen CDATA-Bereich rein soll
Wenn ich Element via .CreateNode und als NodeType ntCData erstelle,
Delphi-Quellcode:
  ixnNote := XMLDocument1.CreateNode('note',ntElement,'');
  ixnRoot.ChildNodes.Add(ixnNote);

  ixnNoteHead := XMLDocument1.CreateNode('noteHead',ntCData,'');
  ixnNoteHead.NodeValue := ' anyhead';
  ixnNote.ChildNodes.Add(ixnNoteHead);
dann kommt in die .xml Datei nur die CDATA sektion ohne den Namen des Elementen 'noteHead'.
<note><![CDATA[ anyheadtext]]></note> Dies ist sehr schlecht, weil das Element noteHead ausgefallen ist.
Wenn ich so erstellte Datei dem Data Binding Wizard gib, generiert er keine Elementklasse 'NoteHead' aus dieser Datei. Sogar das Element 'Note' sieht der Binding Wizard nur als widestring Property (Attribut).

Wenn ich aber in diese .xml Datei das fehlende Elementenname mit Hand zuschreibe
<note><noteHead><![CDATA[ anyheadtext]]></noteHead></note> generiert der Binding Wizard auch die Elementenklasse fur Note. Leider wird NoteHead nur eine Property fur ihm. Einer Property weis ich aber nicht CDATA Sektion zurodnen.

Sieht so aus, als ob Element mit .CreateNode fur eine CDATA noch einen Subelement braucht, um sein Namen nicht verlieren lassen.

Durch Klassen und Properties vom Binding Wizard weis ich nicht die CDATA in die .xml schreiben. Vielleicht geht es wenn ich eine gute .dtd oder .xsd selbst schreibe. Die muss ich zu erst lernen. Kommt mir komisch vor, das so eine triviale Sache wie fuhrende Leerzeichen im Text solche Probleme anschtosst.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: Leerzeichen im string Attribute in XML Datei schreiben

  Alt 30. Aug 2009, 10:08
Zitat von Boro:
Kommt mir komisch vor, das so eine triviale Sache wie fuhrende Leerzeichen im Text solche Probleme anschtosst.
Führende Leerzeichen sind auch nicht Bestandteil einer textuellen Information, weder bei Text, noch bei Zahlen oder Datumsformaten.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Leerzeichen im string Attribute in XML Datei schreiben

  Alt 30. Aug 2009, 10:20
PS: mir ist noch 'ne mögliche Lösung eingefallen

wie es schon bei Programm-Parametern der Fall ist, umschließt man doch einen Parameter mit ", wenn er Leerzeichen enthält.

OK, ein " ist hier nicht wirklich geeignet, aber ein anderes Zeichen tut es ja auch.
$2B or not $2B
  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 13:16 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