Lösung
Property "PreserveWhiteSpace" im XMLPort auf "Yes" setzen. (Globale Property, nicht Feld-bezogen)
UrsprĂĽngliche Problembeschreibung:
Folgende Test-Funktion fĂĽhrt zu "nichts erkannt":
- Code: Alles auswählen
LOCAL ReplaceCrLfWithBr(ParText : Text) ReturnText : Text
LF := 10;
CR := 13;
CarriageReturn := FORMAT(CR) + FORMAT(LF);
IF STRPOS(ParText, FORMAT(CR)) <> 0 THEN BEGIN
ERROR('Carriage Return erkannt');
END ELSE IF STRPOS(ParText, FORMAT(LF)) <> 0 THEN BEGIN
ERROR('Line Feed erkannt');
END ELSE BEGIN
ERROR('nichts erkannt');
END;
Auch wenn ich den Wert des o.g. Knotens direkt im o.g. Trigger per Error ausgebe, ist kein Zeilenumbruch mehr enthalten. SchmeiĂźen XML-Ports die ZeilenumbrĂĽche beim Import einfach weg?
Ich würde es jetzt mal damit versuchen, dass ich ein "CDATA" in der XML einfüge für den o.g. Knoten direkt nach dem Download, bevor ich die XML in den XMLPort kippe. Gibt es dafür evtl. eine elegantere Lösung?
(ich musste auch schon das Attribut "xml:lang" vor der Verarbeitung durch "xmllang" ersetzen, weil XmlPorts nicht mit Doppelpunkten in Attributsbezeichnungen klar kommen . Ich bin echt kein Fan von XmlPorts, das ist wieder sowas halbgar drangeflanschtes, ähnlich wie RDLC.)
Update - selbst mit CDATA gehts nicht
- Code: Alles auswählen
<KNOTEN_TEXT>
<VALUE xml:lang="x-default"><![CDATA[Test vor Absatz.
Das ist ein Test nach einem Absatz]]></VALUE>
<VALUE xml:lang="x-bmde"><![CDATA[Test vor Absatz.
Das ist ein Test nach einem Absatz]]></VALUE>
</KNOTEN_TEXT>