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 26. Aug 2009 · letzter Beitrag vom 30. Aug 2009
Antwort Antwort
Seite 1 von 2  1 2      
Boro

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

Leerzeichen im string Attribute in XML Datei schreiben

  Alt 26. Aug 2009, 23:33
Hi,

ich versuche mit TXMLDocument Daten, meistens Texte, ins XML Datei zu schreiben. Leider verliere ich dabei die Leerzeichen am Anfang des Textes. Z.B.
Delphi-Quellcode:
var MyNode: IXMLNode;
MyNode.SetAttribute('attrib',' meintext');
endet in der XML Datei als <knoten attrib="meintext" /> anstatt <knoten attrib=" meintext" />

Wie kann ich text wie ' etwas' auch mit Leerzeichen am Anfang ins XML Detei speichern?

Danke fur jeden hinweis.

Boro
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Leerzeichen im string Attribute in XML Datei schreiben

  Alt 26. Aug 2009, 23:34
Und was machen wir, wenn jemand im anderen Forum antwortet?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Boro

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

Re: Leerzeichen im string Attribute in XML Datei schreiben

  Alt 26. Aug 2009, 23:46
Zitat von Luckie:
Und was machen wir, wenn jemand im anderen Forum antwortet?
Eine Antwort die die Frage beantwortet wurde ich hier bringen.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#4

Re: Leerzeichen im string Attribute in XML Datei schreiben

  Alt 26. Aug 2009, 23:52
Zitat von Luckie:
Und was machen wir, wenn jemand im anderen Forum antwortet?
Und warum dürfen wir nicht wissen, dass der andere Beitrag hier zu finden ist

MfG,
Bug
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Boro

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

Re: Leerzeichen im string Attribute in XML Datei schreiben

  Alt 27. Aug 2009, 00:05
Zitat von BUG:
Und warum dürfen wir nicht wissen, dass der andere Beitrag hier zu finden ist

MfG,
Bug
Warum sollte jmnd nicht durfen wissen...
Wuste nicht das es mit dem Link so geht. Danke.
Hoffe, das ich nicht irw Regel brach auch an anderes Forum die Frage zu stellen. Wenn ja, dann bitte ich um Verzeihung.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Leerzeichen im string Attribute in XML Datei schreiben

  Alt 27. Aug 2009, 00:12
Crosspostings sind nicht schlimm, nur sollte man sie auch verlinken, damit man sieht, was schon beantwortet wurde.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Leerzeichen im string Attribute in XML Datei schreiben

  Alt 27. Aug 2009, 01:42
Laut XML-Standard werden führende und anhängende Leerzeichen innerhalb eines Attributes entfernt:
http://www.w3.org/TR/REC-xml/#AVNormalize
Zitat von w3.org:
If the attribute type is not CDATA, then the XML processor MUST further process the normalized attribute value by discarding any leading and trailing space (#x20) characters
Du könntest jetzt anfangen rumzutricksen und den Attribut Typ auf CDATA setzen, aber ich würde es nicht tun.
Wenn du die Leerzeichen brauchst, dann ist es kein Attribut sondern ein Element.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Leerzeichen im string Attribute in XML Datei schreiben

  Alt 27. Aug 2009, 06:50
<[CDATA[ ginge

erstell dir eine DTD (Document Type Definition) und definier dein Attribut als #DATA
MSXML sollte diese entsprechend behandeln

maskiere die Leerzeichen

himXML kann das aktuell noch
ist zwar eine Änderung geplant, aber weiter unten auf der ToDo-Liste und wenn, dann soll dieses Verhalten abschaltbar sein
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Boro

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

Re: Leerzeichen im string Attribute in XML Datei schreiben

  Alt 27. Aug 2009, 09:45
Danke an sx2008 und himitsu.
Zitat von sx2008:
Du könntest jetzt anfangen rumzutricksen und den Attribut Typ auf CDATA setzen, aber ich würde es nicht tun.
Ich verwende XML Binding Wizard (Turbo Delphi Pro) und fur den Attribut steht fur Data Type keine CDATA Moglichkeit da. Also weis ich eigentlich nicht, wie den Attribut auf CDATA Typ umschalten. Wie macht man dies? Auf der w3.org Seite steht
Zitat:
All attributes for which no declaration has been read SHOULD be treated by a non-validating processor as if declared CDATA.
Soll ich den Daten Typ des Attributen einfach leer lassen? Die Property poValidateOnParse hab ich false.
Ehrlich gesagt, im Binding Wizard sehe ich fuer Daten Typ des Elementen (Node) keine Wahl
Zitat von sx2008:
Wenn du die Leerzeichen brauchst, dann ist es kein Attribut sondern ein Element.
Wie kann ich abschaetzen ob ein Element oder Attribut zu verwenden?
Die XML Datei brauch ich fur Export der Daten aus mehreren Tabellen zusammen in einer Datei und Hierarchie die einer Relation entspricht. Im Prinzip dachte ich, das ein Datensatz von der Tabelle ein Element sein soll und die Feldern sollen die Attributen sein.


Zitat von himitsu:
<[CDATA[ ginge
erstell dir eine DTD (Document Type Definition) und definier dein Attribut als #DATA
Da waere ein Beispiel hilflich. Biss jetzt schrieb ich nur die .xml Datei wie ich mir sie vorstelle. Aus .xml Datei gibt mir der XML Binding Wizard eine Unit fur einfachen Zugriff an XML Dokument.
Zitat von himitsu:
maskiere die Leerzeichen
DU meinst Anstatt Leerzeichen eine Substituzion beim schreiben und lesen zu verwenden? Im schlimssten Fall...
Zitat von himitsu:
himXML kann das aktuell noch
Danke, vieleicht spaeter. Momentan sieht es mehr danach, es fehlen mir mehr Kentnisse und Erfahrung als eine zusaztliche Klasse oder Unite. Aber gut zu wissen es gibt einen Ausgang...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Leerzeichen im string Attribute in XML Datei schreiben

  Alt 27. Aug 2009, 10:35
Zitat von Boro:
Also weis ich eigentlich nicht, wie den Attribut auf CDATA Typ umschalten.
eine DTD schreiben und via <!DOCTYPE> in die XML einbinden

Zitat von Boro:
Da waere ein Beispiel hilflich.
ich weiß jetzt leider auch nicht, wie man sowas effektiv via MSXML macht

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

bei mir (himXML) wäre das recht einfach über Node.asCDATA(True); zu lösen (muß man nur einmal beim Erstellen des Nodes machen) und ab dann werden alle Aufruve von Node.Text und Co. an einen untegeordneten CDATA-Node weitergeleitet und dieser CDATA-Node wird notfalls noch erstellt.



zum Thema "Konvertieren"

mit StringReplace vorm Zuweisen die Leerzeichen in was Anderes umwandeln
und nach dem Auslesen zurück

wenn du es schaffst, daß Leerzeichen als HTML-Code in die XML-Datei reinzubekommen, ohne daß dieses & maskiert wird, dann ginge es auch darüber.

<b attr="&#32;xyz"/> ... aber MSXML maskiert normaler Weise einige Zeichen, wie z.B. das &
und bei .Attributes['attr'] := '&#32;xyz'; steht dann sowas <b attr="&amp;#32;xyz"/> in der Datei.

aber wenn du es schaffst mindestens das erste Leerzeichen als &#32; in die XML-Datei reinzubekommen, dann wandelt dir MSXML dieses &#32; automatisch beim Auslesen in ein Leerzeichen um und entfernt auch dieses und nachfolgene Leerzeichen nicht mehr.
also nur beim Zuweisen mußt du etwas beachten und Auslesen geht dabei ohne Probleme/Umwandlung.

wenn du diese Datei ausließt, dann bekommst du '****xyz' als Attribut-Text zurück ... und es sollte auch für normalen NodeText gelten
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a>
  <b attr="[b]&[/b]#32;  xyz"/>
  [b][b]&[/b]#32;  xyz</c>
</a>
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:35 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