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="
 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>