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.