![]() |
Leerzeichen im string Attribute in XML Datei schreiben
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:
endet in der XML Datei als <knoten attrib="meintext" /> anstatt <knoten attrib=" meintext" />
var MyNode: IXMLNode;
MyNode.SetAttribute('attrib',' meintext'); Wie kann ich text wie ' etwas' auch mit Leerzeichen am Anfang ins XML Detei speichern? Danke fur jeden hinweis. Boro |
Re: Leerzeichen im string Attribute in XML Datei schreiben
Und was machen wir, wenn jemand im anderen Forum antwortet?
|
Re: Leerzeichen im string Attribute in XML Datei schreiben
Zitat:
|
Re: Leerzeichen im string Attribute in XML Datei schreiben
Zitat:
![]() MfG, Bug |
Re: Leerzeichen im string Attribute in XML Datei schreiben
Zitat:
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. |
Re: Leerzeichen im string Attribute in XML Datei schreiben
Crosspostings sind nicht schlimm, nur sollte man sie auch verlinken, damit man sieht, was schon beantwortet wurde.
|
Re: Leerzeichen im string Attribute in XML Datei schreiben
Laut XML-Standard werden führende und anhängende Leerzeichen innerhalb eines Attributes entfernt:
![]() Zitat:
Wenn du die Leerzeichen brauchst, dann ist es kein Attribut sondern ein Element. |
Re: Leerzeichen im string Attribute in XML Datei schreiben
<[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 |
Re: Leerzeichen im string Attribute in XML Datei schreiben
Danke an sx2008 und himitsu.
Zitat:
Zitat:
Ehrlich gesagt, im Binding Wizard sehe ich fuer Daten Typ des Elementen (Node) keine Wahl Zitat:
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:
Zitat:
Zitat:
|
Re: Leerzeichen im string Attribute in XML Datei schreiben
Zitat:
Zitat:
aber es gibt für Text diese Möglichkeiten
XML-Code:
wobei man in CDATA die wenigsten Beschränkungen hat und auch keine Normalisierung durchgeführt wird
<node attr="text" />
<node>text</node> <node><[CDATA[text]]></node> <[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=" xyz"/> ... aber MSXML maskiert normaler Weise einige Zeichen, wie z.B. das & und bei .Attributes['attr'] := ' xyz'; steht dann sowas <b attr="&#32;xyz"/> in der Datei. aber wenn du es schaffst mindestens das erste Leerzeichen als   in die XML-Datei reinzubekommen, dann wandelt dir MSXML dieses   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> |
Re: Leerzeichen im string Attribute in XML Datei schreiben
Zitat:
Delphi-Quellcode:
dann kommt in die .xml Datei nur die CDATA sektion ohne den Namen des Elementen 'noteHead'.
ixnNote := XMLDocument1.CreateNode('note',ntElement,'');
ixnRoot.ChildNodes.Add(ixnNote); ixnNoteHead := XMLDocument1.CreateNode('noteHead',ntCData,''); ixnNoteHead.NodeValue := ' anyhead'; ixnNote.ChildNodes.Add(ixnNoteHead);
XML-Code:
Dies ist sehr schlecht, weil das Element noteHead ausgefallen ist.
<note><![CDATA[ anyheadtext]]></note>
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
XML-Code:
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.
<note><noteHead><![CDATA[ anyheadtext]]></noteHead></note>
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. |
Re: Leerzeichen im string Attribute in XML Datei schreiben
Zitat:
|
Re: Leerzeichen im string Attribute in XML Datei schreiben
PS: mir ist noch 'ne mögliche Lösung eingefallen :stupid:
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:41 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